Python3基础-列表、元组操作
Q:什么是列表
-----【有序列表】列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
Tips:定义一个列表
names = ['Roman',"Tenglan",'Eric','Ronny']
通过指针可以访问到指定的元素,从左到右 0 开始计数
>>> names[0] 'Roman' >>> names[2] 'Eric' >>> names[-1] 'Ronny' >>> names[-2] #还可以倒着取 'Eric'
- 切片:
获取列表中多个元素
>>>names = ['Roman',"Tenglan",'Eric','Ronny'] >>>names[1:3]#取索引1到3之间的元素,不包括索引为3的元素 ['Tenglan', 'Eric'] >>>names[-1]#取最后一个元素 'Ronny' >>>names[:3]#取0到3之间的元素,不包括索引为3的元素 ['Roman', 'Tenglan', 'Eric'] >>>names[0:3]#同上,效果一样 ['Roman', 'Tenglan', 'Eric'] >>>names[3:]#取3到结尾的所有元素 ['Ronny'] >>>names[0::2]从0开始到结尾,每隔一个元素取值 ['Roman', 'Eric'] >>>names[::2]#同上,效果一样 ['Roman', 'Eric']
- 追加:
语法:list.append(obj) 在末尾追加新的对象
>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.append('新加入Tom')
>>>names
['Roman', 'Tenglan', 'Eric', 'Ronny', '新加入Tom']
- 插入:
语法:list.insert(index.obj) 在index位置追加新的对象
>>>names = ['Roman',"Tenglan",'Eric','Ronny'] >>>names.insert(1,'插入的bin') >>>names ['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny']
- 修改:
语法:list[index]=obj 在index位置把原来的对象修改为obj
>>>names=['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny'] >>>names[1]='替换的Tonny' >>>names ['Roman', '替换的Tonny', 'Tenglan', 'Eric', 'Ronny']
- 删除:
语法【1】:list.pop(index) 删除index的对象---通过索引删除--pop()删除末尾最后一个对象
语法【2】:del list[index] 删除index的对象---通过索引删除--del系统方法
语法【3】:list.remove[obj] 删除obj对象---通过对象删除
>>>names=['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny']
>>>names.pop()
'Ronny'
>>>names
['Roman', '插入的bin', 'Tenglan', 'Eric']
>>>names.pop(0)
'Roman'
>>>names
['插入的bin', 'Tenglan', 'Eric']
>>>del names[0]
>>>names
['Tenglan', 'Eric']
>>>names.remove('Tenglan')
>>>names
['Eric']
- 清空:
语法:list.clear() 清空列表,此时列表还在,为空列表
>>>names = ['Roman',"Tenglan",'Eric','Ronny'] >>>names.clear() >>>names []
- 查找:
语法:list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.index('Ronny')
3
- 统计:
语法:list.count(obj) 统计某个元素在列表中出现的次数
>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny']
>>>names.count('Ronny')
2
- 追加列表:
语法:list.extend (list) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny'] >>>names1=['Tonny','Kim'] >>>names.extend(names1) >>>names ['Roman', 'Tenglan', 'Ronny', 'Eric', 'Ronny', 'Tonny', 'Kim']
- 拷贝:
语法【1】:list1=list1.copy( )
>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny'] >>>names_1=names.copy() >>>names_1 ['Roman', 'Tenglan', 'Ronny', 'Eric', 'Ronny']
Q:如果copy的列表存在多层嵌套,修改原list的耳机列表对象值,copy的列表值有何变化?
- copy()只能做到潜复制,只能复制第一层列表对象,二层或多层列表的对象内存不会改变
>>>names = ['Roman',"Tenglan",'Ronny',['Eric','Ronny']] >>>names_1=names.copy() >>>names_1 ['Roman', 'Tenglan', 'Ronny', ['Eric', 'Ronny']] >>>names[0]='修改的Roman'#修改第一层列表的值 >>>names ['修改的Roman', 'Tenglan', 'Ronny', ['Eric', 'Ronny']]#已经变化 >>>names_1 ['Roman', 'Tenglan', 'Ronny', ['Erici', 'Ronny']]#未改变
>>>names[3][0]='修改的Tonny'#修改第二层列表的值 >>>names ['Roman', 'Tenglan', 'Ronny', ['修改的Tonny', 'Ronny']]#已经变化 >>>names_1 ['Roman', 'Tenglan', 'Ronny', ['修改的Tonny', 'Ronny']]#已经变化
names_1中嵌套的列表内存地址和names内存地址同一个
语法【2】:list=list1[:] 切片复制
>>>person=['name',['存款',100]] >>>person1=person[:] >>>person2=person[:] >>>person1[0]='Ronny' >>>person2[0]='Angel' >>>person1[1][1]=1000 >>>person1 ['Ronny', ['存款', 1000]] >>>person2 ['Angel', ['存款', 1000]]
- 排序&翻转:
>>> names ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3'] >>> names.sort() >>> names ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom'] >>> names.reverse() #反转 >>> names ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
- 遍历
方法一:遍历列表的值 for i in range(11): print(i) 方法一:遍历列表的键和值 使用enumerate 方法 for key,v in enumerate(range(11)): print(key,v)
- 列表操作符号
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
| Python 表达式 | 结果 | 描述 |
|---|---|---|
| len([1, 2, 3]) | 3 | 长度 |
| [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
| ['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
| 3 in [1, 2, 3] | True | 元素是否存在于列表中 |
| for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
#遍历列表, 打印索引和元素
#遍历列表, 打印索引和元素
names = ['Tom', 'Jerry', 'Marry']
for index, name in enumerate(names):
print('names[{}] = {}'.format(index, name))
打印结果:
names[0] = Tom
names[1] = Jerry
names[2] = Marry
Q:什么是元祖
-----【只读列表】tuple元祖和列表类似,只是不能修改和追加
Tips:定义一个tuple
>>>names = ('Roman',"Tenglan",'Ronny','Eric','Ronny')
len(tuple)可以获取列表的长度
tuple只有count(obj) 和 index(obj) 方法

浙公网安备 33010602011771号