Python3学习之路~2.1 列表、元组操作
列表
列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
定义列表(list)
names=['Amy','Bob','Cindy','David']
通过下标访问列表中的元素,下标从0开始计数,还可以倒着取
>>> names[0]
'Amy'
>>> names[1]
'Bob'
>>> names[-1]
'David'
>>> names[-2]
'Cindy'
切片:取多个元素
>>> names=['Amy','Bob','Cindy','David','Eric','Frank']
>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4
['Bob', 'Cindy', 'David']
>>> names[1:-1] #取下标1至-1(最后一个)的值,不包括-1
['Bob', 'Cindy', 'David', 'Eric']
>>> names[0:3]
['Amy', 'Bob', 'Cindy']
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
['Amy', 'Bob', 'Cindy']
>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['David', 'Eric', 'Frank']
>>> names[3:-1] #这样-1就不会被包含了
['David', 'Eric']
>>> names[0::2] #后面的2代表每隔一个元素就取一个
['Amy', 'Cindy', 'Eric']
>>> names[::2] #0可以忽略,和上句效果一样
['Amy', 'Cindy', 'Eric']
追加
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank']
>>> names.append("Serena") #追加元素会放在列表的最后一个
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
插入
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.insert(2,'Olivia') #强行从Cindy前面插入
>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.insert(5,'Anna')
>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
修改
>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> names[2]='Tim' #将Olivia修改为Tim
>>> names
['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
删除
>>> names
['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> del names[2]
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> del names[4]
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.remove("David") #删除指定元素
>>> names
['Amy', 'Bob', 'Cindy', 'Eric', 'Frank', 'Serena']
>>> names.pop() #删除列表最后一个值
'Serena'
>>> names
['Amy', 'Bob', 'Cindy', 'Eric', 'Frank']
>>> names.pop(1) #删除列表第二个值
'Bob'
>>> names
['Amy', 'Cindy', 'Eric', 'Frank']
>>> names.clear() #清空列表
>>> names
[]
>>> del names #删除列表
>>> names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'names' is not defined
扩展
>>> names=['Amy','Bob','Cindy','David','Eric','Frank']
>>> b=[1,2,3]
>>> names.extend(b)
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 1, 2, 3]
拷贝
>>> import copy
>>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
>>> names_copy_1=names.copy() #浅拷贝,只拷贝第一层,可以看做拷贝了第二层的内存地址
>>> names_copy_2=names #names_copy_2和names完全一致,names修改,names_copy_2也跟着修改
>>> names_copy_3=copy.copy(names) #浅拷贝,与names.copy()效果完全一致
>>> names_copy_4=names[:] #完全切片的形式创建浅拷贝,与names.copy()效果完全一致
>>> names_copy_5=list(names) #工厂函数的形式创建浅拷贝,与names.copy()效果完全一致
>>> names_copy_6=copy.deepcopy(names) #深拷贝,names_copy与names完全独立
>>> names
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_1
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_2
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_3
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_4
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_5
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_6
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names[2]="森碟"
>>> names[3][0]="DAVID"
>>> names
['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_1
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_2
['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_3
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_4
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_5
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_6
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> person=['name',['money',100]]
>>> p1=person[:]
>>> p2=person[:]
>>> p1[0]='husband'
>>> p2[0]='wife'
>>> p1[1][1]=50
>>> p1
['husband', ['money', 50]]
>>> p2
['wife', ['money', 50]]
>>>
浅拷贝应用:比如创建联合账号,夫妻二人共同财产100元,丈夫花了50元,则丈夫妻子的共同财产均只剩下50元
统计
>>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.count("Amy")
2
排序&反转
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.sort() #排序
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str' #3.0里不同数据类型不能放在一起排序了
>>> names[-3]=''
>>> names[-2]=''
>>> names[-1]=''
>>> names.append('#')
>>> names.append('bob')
>>> names.append('amy')
>>> names
['', '', '', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', '#', 'bob', 'amy']
>>> names.sort() #按照ASCII码顺序排序,一般顺序为:特殊字符、数字、大写字母、小写字母
>>> names
['#', '', '', '', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'amy', 'bob']
>>> names.reverse() #反转
>>> names
['bob', 'amy', 'Frank', 'Eric', 'David', 'Cindy', 'Bob', 'Amy', 'Amy', '', '', '', '#']
获取下标
>>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.index("Amy") #只返回找到的第一个下标
0
列表循环
>>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
>>> for i in names:
... print(i)
...
Amy
Bob
Cindy
['David', 'Eric']
Frank
列表循环取出元素以及下标
>>> list=['a','b','c']
>>> for item in list:
... print(list.index(item),item) #方法1
...
0 a
1 b
2 c
>>> for i in enumerate(list):
... print(i) #方法2
...
(0, 'a')
(1, 'b')
(2, 'c')
>>> for index,item in enumerate(list):
... print(index,item) #方法3
...
0 a
1 b
2 c
其他
>>> names=['Amy','Bob','Cindy','David']
>>> 'Amy' in names #判断一个值是否在列表中,列表、元组、字符串、字典、集合均如此操作
True
>>> Alex in names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Alex' is not defined
元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
定义元组(tuple)
names=('Amy','Bob','Cindy','David')
它只有2个方法,一个是count,一个是index。
>>> names=('Amy','Bob','Cindy','Amy','David')
>>> names.count('Amy') #统计
2
>>> names.index('Amy') #获取下标,只返回找到的第一个下标
0
Python3学习之路~2.1 列表、元组操作的更多相关文章
- Python3学习之路~4.1 列表生成式、生成器
1 列表生成式 我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现?你可能会想到2种方式 a=[0,1,2,3,4,5,6,7,8 ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- Git学习之路(6)- 分支操作
▓▓▓▓▓▓ 大致介绍 几乎所有的版本控制系统都会支持分支操作,分支可以让你在不影响开发主线的情况下,随心所欲的实现你的想法,但是在大多数的版本控制系统中,这个过程的效率是非常低的.就比如我在没有学习 ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python学习笔记-(四)列表&元组
1.列表及元组操作 1.1 列表 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 定义列表: >>> namelist = ...
- python基础数据类型之列表,元组操作
一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...
- Git学习之路(4)- 撤销操作、删除文件和恢复文件
▓▓▓▓▓▓ 大致介绍 经过前面的学习(小白学Git)已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即: ◆ 撤销操作 ◆ 删除文件 ◆ 恢复文件 我在此之前,已经将三个文件提交 ...
- Python3学习之路~9.4 队列、生产者消费者模型
一 队列queue 当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用. 队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率 列表与队列都是有顺序的,但是他们之间有一个很大的区别 ...
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...
随机推荐
- 教你在windows下安装使用配置vim+gcc[转]
转自http://blog.163.com/lixiangqiu_9202/blog/static/535750372012461190722/ 一直在使用linux,但有时也会去虚拟机里的winxp ...
- (转)C语言中长度为0的数组
前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该 ...
- 常见微信小程序开发工具
图标: 1.iconfont图标库:http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2
- GNU Readline库函数的应用示例
说明 GNU Readline是一个跨平台开源程序库,提供交互式的文本编辑功能.应用程序借助该库函数,允许用户编辑键入的命令行,并提供自动补全和命令历史等功能.Bash(Bourne Again Sh ...
- Android设计和开发系列第一篇:Notifications通知(Develop—API Guides)
Notifications IN THIS DOCUMENT Design Considerations Creating a Notification Required notification c ...
- 【cs229-Lecture3】为什么要选择“最小二乘法”这个指标
视频地址:http://v.163.com/movie/2008/1/E/B/M6SGF6VB4_M6SGHM4EB.html 具体的推导过程,讲义上都有,已经很详细了.这里的推导过程大都是自己为了练 ...
- 【Spring Boot&&Spring Cloud系列】Spring Boot中使用数据库之MySql
对于传统关系型数据库来说,Spring Boot使用JPA(Java Persistence API)资源库提供持久化的标准规范,即将Java的普通对象通过对象关系映射(ORM)持久化到数据库中. 项 ...
- git 命令自动补全
下载 Git 的源代码 使用如下命令即可下载: git clone https://github.com/git/git 复制 git-completion.bash 源代码下有个 contrib/c ...
- jQuery属性操作(二)
挂载到$上的几个属性操作方法分析,发现属性操作用到了sizzle封装的方法 attr: function( elem, name, value ) { var hooks, ret, ...
- Mysql 的事务隔离级别
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销.Read Uncommitted(读取 ...