列表和元组都是Python中常见的数据类型。
列表和元组都是一个可以存放任意类型数据(可重复)的有序集合。
列表可变,可以随意增加、删除、修改其中的元素;元组不可变,一旦初始化就不能进行修改。
1.列表list
Python中列表用中括号[]表示,列表中的元素用逗号(,)隔开。
列表可以存储多个数据,且数据可以是不同类型,并且可重复。
(1)查找
同字符串一样,列表可以通过索引查询其中元素。
li1 = ['张三', 1, '王五', None, '李四', 3.6, True] print(li1[2]) #王五 print(li1[1:4]) #[1, '王五', None] print(li1[:3]) #['张三', 1, '王五']
index()可以查询指定元素的索引。
index(元素, 起始索引, 结束索引)可指定索引范围查找指定元素,范围包含起始索引,不包含结束索引。
查询的元素不在列表中,则会报错。ValueError: xxx is not in list
li1 = ['张三', 1, '李四', '王五', None, 1, '李四', 3.6, True] print(li1.index(1)) #1 print(li1.index('张三')) #0 print(li1.index(None)) #4 print(li1.index('李四', 3, 7)) #6
count():统计指定元素在列表中出现的次数。
li1 = ['张三', 1, '李四', '王五', None, 1, '李四', 3.6, True] print(li1.count('李四')) #2
len():获取列表的长度,即列表中元素的个数。
li1 = ['张三', 1, '李四', '王五', None, 1, '李四', 3.6, True] print(len(li1)) #9
列表的遍历:
通常用for循环遍历列表中的元素:
li1 = ['张三', '李四', '王五', '赵六'] for name in li1: print(name)
(2)增加
往列表中添加元素。
append():往列表结尾追加元素。
li1 = ['张三', '李四', '王五'] li1.append('赵六') print(li1) #['张三', '李四', '王五', '赵六'] li2 = [1, '李四'] li1.append(li2) print(li1) #['张三', '李四', '王五', '赵六', [1, '李四']]
insert():往列表指定索引位置添加元素。
li1 = ['张三', '李四', '王五'] li1.insert(0, 3.1) #0是索引,3.1是要添加的元素,把3.1添加到列表最左边 print(li1) #[3.1, '张三', '李四', '王五']
extend():将一个序列中所有元素逐个添加到列表结尾。
li1 = ['张三', '李四', '王五'] li1.extend([1, '张三']) print(li1) #['张三', '李四', '王五', 1, '张三']
(3)删除
删除列表中的元素。
pop():删除指定索引的元素,并返回该元素。不指定索引时,默认删除最后一个元素。
li1 = ['张三', '李四', '张三', '王五'] print(li1.pop()) #王五 print(li1) #['张三', '李四', '张三'] #li1此时为['张三', '李四', '张三'] li1.pop(0) #删除li1索引0对应的元素 print(li1) #['李四', '张三']
remove():删除指定元素。若列表中不存在该元素,则报错:ValueError: list.remove(x): x not in list
li1 = ['张三', '李四', '张三', '王五'] li1.remove('张三') print(li1) #['李四', '张三', '王五']
clear():清空列表中所有元素。
li1 = ['张三', '李四', '张三', '王五'] li1.clear() print(li1) #[]
Python中的del函数也可以用来删除列表或列表中的元素。
li1 = ['张三', '李四', '张三', '王五', '赵六'] del li1[0] print(li1) #['李四', '张三', '王五', '赵六'] del li1[:2] print(li1) #['王五', '赵六'] del li1 #删除了li1对变量的引用,并删除了变量名li1,所以下面语句会报错 print(li1) #NameError: name 'li1' is not defined
(4)修改
修改列表的元素。
通过索引可以直接修改:
li1 = ['张三', '李四', '张三', '王五', '赵六'] li1[2] = '张三三' print(li1) #['张三', '李四', '张三三', '王五', '赵六']
reverse():将列表中的元素逆置。
li1 = ['张三', '李四', '王五', '赵六'] li1.reverse() print(li1) #['赵六', '王五', '李四', '张三']
sort():对列表中的元素进行排序,默认按升序排列。reverse = True 表示降序。字符串按首个字符ASCII码进行排序。
li1 = [1, 3, 6, 2, 5, 4] li2 = li1 li3 = ['b', 'c', 'exx', 'a', '你好'] li1.sort() li3.sort() print(li1) #[1, 2, 3, 4, 5, 6] print(li2) #[1, 2, 3, 4, 5, 6] print(li3) #['a', 'b', 'c', 'exx', '你好'] li1.sort(reverse=True) print(li1) #[6, 5, 4, 3, 2, 1]
copy():复制一个列表
li1 = [1, 3, 6, 2, 5, 4] li2 = li1.copy() li1.sort() print(li1) #[1, 2, 3, 4, 5, 6] print(li2) #[1, 3, 6, 2, 5, 4]
2.元组tuple
元组和列表相似,用小括号()表示,元组中的元素也用逗号隔开。
和列表不同的是:元组不可变,不能进行修改;元组中只有一个元素时,也要在该元素后面加一个逗号,否则不表示元组,而是该元素本身。
a = ('你好') print(type(a)) #<class 'str'> b = ('你好',) print(type(b)) #<class 'tuple'>
元组tuple的查找操作同列表list一样。
通过索引查找:
tu1 = ('张三', '李四', '王五', '赵六', '李四', '张三', '李四') print(tu1[3]) #赵六 print(tu1[1:4]) #('李四', '王五', '赵六')
index():
tu1 = ('张三', 1, '李四', '王五', None, 1, '李四', 3.6, True) print(tu1.index(1)) #1 print(tu1.index('张三')) #0 print(tu1.index(None)) #4 print(tu1.index('李四', 3, 7)) #6
count():
tu1 = ['张三', 1, '李四', '王五', None, 1, '李四', 3.6, True] print(tu1.count('李四')) #2
len():
tu1 = ['张三', 1, '李四', '王五', None, 1, '李四', 3.6, True] print(len(tu1)) #9
元组的遍历同列表一样,通常用for循环。
浙公网安备 33010602011771号