列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
定义列表
1
|
names = [ ‘Alex‘ , "Tenglan" , ‘Eric‘ ] |
通过下标访问列表中的元素,下标从0开始计数
1
2
3
4
5
6
7
8
|
>>> names[ 0 ] ‘Alex‘ >>> names[ 2 ] ‘Eric‘ >>> names[ - 1 ] ‘Eric‘ >>> names[ - 2 ] #还可以倒着取 ‘Tenglan‘ |
切片:取多个元素
1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 2 >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4 3 [‘Tenglan‘, ‘Eric‘, ‘Rain‘] 4 >>> names[1:-1] #取下标1至-1的值,不包括-1 5 [‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘] 6 >>> names[0:3] 7 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样 9 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] 10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写 11 [‘Rain‘, ‘Tom‘, ‘Amy‘] 12 >>> names[3:-1] #这样-1就不会被包含了 13 [‘Rain‘, ‘Tom‘] 14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个 15 [‘Alex‘, ‘Eric‘, ‘Tom‘] 16 >>> names[::2] #和上句效果一样 17 [‘Alex‘, ‘Eric‘, ‘Tom‘] 18 19 20 21 #步长切片 22 print(names[0:7:2]) 23 # 0 -1 可以省略 24 print(names[::2])
追加
>>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names.append("我是新来的") >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
插入
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 3 >>> names.insert(2,"强行从Eric前面插入") 4 >>> names 5 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 6 7 >>> names.insert(5,"从eric后面插入试试新姿势") 8 >>> names 9 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
修改
>>> names [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> names[2] = "该换人了" >>> names [‘Alex‘, ‘Tenglan‘, ‘该换人了‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
删除
>>> del names[2] >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> del names[4] >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> >>> names.remove("Eric") #删除指定元素 >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] >>> names.pop() #删除列表最后一个值 ‘我是新来的‘ >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
扩展
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] 3 >>> b = [1,2,3] 4 >>> names.extend(b) 5 >>> names 6 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
拷贝
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> name_copy = names.copy() >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] # 复制 copy 浅copy 多层列表只会copy第一层 names.append([3,4]) names2 = names.copy() names[4] = ‘TiAmo‘ names[-1][0] = 2 print(names,names2) ‘‘‘ 共用账号 联合账号 这种情况会用到浅COPY 把共用部分放到第二层 ‘‘‘ # 深copy 会完全copy 必须调用copy 模块 ‘‘‘ import copy names2 = copy.deepcopy(names) ‘‘‘
统计
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 3 >>> names.count("Amy")
排序&翻转
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 3 >>> names.sort() #排序 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦 7 >>> names[-3] = ‘1‘ 8 >>> names[-2] = ‘2‘ 9 >>> names[-1] = ‘3‘ 10 >>> names 11 [‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘, ‘1‘, ‘2‘, ‘3‘] 12 >>> names.sort() 13 >>> names 14 [‘1‘, ‘2‘, ‘3‘, ‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘] 15 16 >>> names.reverse() #反转 17 >>> names 18 [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘]
获取下标
1 >>> names 2 [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘] 3 >>> names.index("Amy") 4 2 #只返回找到的第一个下标
循环
1 # 列表循环 2 for i in names : 3 print(i)
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
语法
1
|
names = ( "alex" , "jack" , "eric" ) |
它只有2个方法,一个是count,一个是index,完毕。
原文:https://www.cnblogs.com/garrett7/p/11568822.html