列表 元组
Posted sleeping-cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表 元组相关的知识,希望对你有一定的参考价值。
一、列表
1. 定义列表:
变量 = [‘’,’’,’’,’’…….]
列表中可以包含列表,为子列表
2. 切片:取多个元素
>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4 [‘Tenglan‘, ‘Eric‘, ‘Rain‘] >>> names[1:-1] #取下标1至-1的值,不包括-1 [‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘] >>> names[0:3] [‘Alex‘, ‘Tenglan‘, ‘Eric‘] >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写 [‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names[3:-1] #这样-1就不会被包含了 [‘Rain‘, ‘Tom‘] >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个 [‘Alex‘, ‘Eric‘, ‘Tom‘] >>> names[::2] #和上句效果一样 [‘Alex‘, ‘Eric‘, ‘Tom‘]
3. 追加:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names.append("我是新来的") >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
4. 插入:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names.insert(1,"新来的") >>> names [‘Alex‘, ‘新来的‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
5. 修改:
>>> names [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘ , ‘Tom‘, ‘Amy‘] >>> names[2] = "该换人了" >>> names [‘Alex‘, ‘Tenglan‘, ‘该换人了‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy ‘]
6. 删除:
1)
>>> del names[2] #删除下标为2的元素 >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
2)
>>> names.remove("Eric") #删除指定元素 >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
3)
>>> names.pop() #默认删除列表最后一个值,输入下标等同于del names[] ‘我是新来的‘ >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
7. 扩展:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> b = [1,2,3] >>> names.extend(b) >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] del b#删除变量b
8. 拷贝:
a) 浅copy:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 1) >>> name_copy = names.copy() >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 2) >>>names[3] = ‘向鹏’ #names[‘Tom‘] = ‘向鹏’ 报错,names[]必须写下标 >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘向鹏‘, ‘Amy‘, 1, 2, 3] >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, [‘Tom‘, ‘Amy‘],‘Tom‘, ‘Amy‘, 1, 2, 3] 3) >>> names[3][0] = ‘tom’ >>> names[4] = ‘向鹏’ [‘Alex‘, ‘Tenglan‘, ‘Rain‘, [‘tom‘, ‘Amy‘], ‘向鹏‘, ‘Amy‘, 1, 2, 3] >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, [‘tom‘, ‘Amy‘],‘Tom‘, ‘Amy‘, 1, 2, 3]
浅copy,只copy第一层,下一层指向原内存地址,可理解为:第一层独立copy一份,不是指向的第一层的内存地址
第二个列表拷贝第一个列表,实际上第二个列表中的每个元素只是第一个列表每一个元素的引用
浅copy三种实现方式:
Import copy person = [‘name’,[‘saving’,100]] 1) P1 = copy.copy(person) 2) P2 = person[:] 3) P3 = list(person)
浅copy使用:
i. 创建联合账号
p1 = person[:] p2 = person[:] p1[0]=’alex’ p2[0]=’fengjie’ print(p1) ——>[‘alex’,[‘saving’,100]] print(p2) ——>[‘fengjie’,[‘saving’,100]] p1[1][1] = 50 print(p1) ——>[‘alex’,[‘saving’,50]] print(p2) ——>[‘fengjie’,[‘saving’,50]]
b) 深copy:
import copy name_copy = copy.deepcopy(names) >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, [‘Tom‘, ‘Amy‘],‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, [‘tom‘, ‘Amy‘], ‘向鹏‘, ‘Amy‘, 1, 2, 3]
9. 统计:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.count("Amy") 2
10. 排序&翻转:
排序:
>>> names [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.sort() #排序 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序 >>> names[-3] = ‘1‘ >>> names[-2] = ‘2‘ >>> names[-1] = ‘3‘ >>> 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‘]
11. 获取下标:
>>> names [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘] >>> names.index("Amy") 2 #只返回找到的第一个下标 >>> names[names.index("Amy")] Amy
12.
1) 循环
for i in names: print(i)#打印names列表
2) 步长切片
print(names[0:-1:2]) print(names[::2])
二、元组
1. 元组一旦创建不能更改,只能查(切片),又叫只读列表
2. 语法:
names = ("alex","jack","eric")
它只有2个方法,一个是count,一个是index
以上是关于列表 元组的主要内容,如果未能解决你的问题,请参考以下文章