1、基础知识
1.1、定义
列表是处理一组有序项目的数据结构
1.2、基本格式
列表名 = [元素1,元素2,元素3....]
#所有元素都放在[]内,元素与元素之间用,隔开
#元素之前的数据类型可以各不相同
#列表也可以像字符串一样进行切片/截取操作
#列表也是可迭代对象,可以for循环遍历取值- 实例
li = [1,2,3,'abc',True]
li2 = li[0:4]
for i in li2:
print(i)
2、列表相关操作
2.1、添加元素
2.1.1、append
- 功能:整体添加,只会把括号中的内容当成一个元素添加进去
- 基本格式:
li = [1, 2, 3, 4, 5]
li.append(123) # li = [1, 2, 3, 4, 5, 123]
li.append([1,2]) # li = [1, 2, 3, 4, 5, 123, [1, 2]]
li.append('qaq') # li = [1, 2, 3, 4, 5, 123, [1, 2], 'qaq']2.1.2、extend
- 功能:分散添加,将另一个类型中的元素逐一添加,字符串会被拆解一个一个字符,若要添加的元素既不是字符串也不是列表,即是不可迭代的对象,则会报错。
- 基本格式:
li = [1, 2, 3, 4, 5]
li.extend([1,2]) # li = [1, 2, 3, 4, 5, 1, 2]
li.extend('678') # li = [1, 2, 3, 4, 5, 1, 2, '6', '7', '8']
li2 = [10, 20, 30]
li.extend(li2) # li = [1, 2, 3, 4, 5, 1, 2, '6', '7', '8', 10, 20, 30]2.1.3、insert
- 功能:在指定下标位置插入元素,原位置的元素往后移动
- 基本格式:insert(指定要插入的位置,元素)
li = [1, 2, 3, 4, 5]
li.insert(2, 10) # li = [1, 2, 10, 3, 4, 5]2.2、修改元素
- 直接通过下标就可以进行修改
- 基本格式:
li = [1, 2, 3, 4, 5]
li[0] = 10 # li = [10, 2, 3, 4, 5]2.3、查找元素
2.3.1、in与not in
- in:判断指定元素是否在列表中,如果存在就返回True,否则返回False
- not in:判断指定元素是否不在列表中,如果不在就返回True,否则返回False
li = [1, 2, 3, 4, 5]
print(1 in li) # True
print(6 in li) # False
print(1 not in li) # False
print(6 not in li) # True- 实例: 用户输入昵称,昵称重复则不能使用,可以定义一个列表,保存已经存在的昵称。
name_list = ['Alice', 'Bob', 'Charlie', 'David']
while True:
name = input("请输入您的昵称")
if name in name_list:
print(f"您输入的昵称{name}已经存在,请重新输入")
else:
print(f"您输入的昵称{name}不存在,欢迎加入我们")
name_list.append(name)
break
2.3.2、index与count
- 功能与字符串里的index和count类似,参考字符串
- index:返回指定数据所在位置的下标,如果查找的数据不存在则会报错
- count:统计指定数据在当前列表出现的次数
2.4、删除元素
2.4.1、del
- 功能:删除整个列表,根据下标删除指定元素,根据下标范围删除指定元素(左闭右开)。
- 基本格式:
li = ['a', 'b', 'c', 'd', 'e']
del li[0] #li = ['b', 'c', 'd', 'e']
del li[0:3] #li = ['e']
del li
print(li) #NameError: name 'li' is not defined2.4.2、pop
- 功能:删除指定下标的数据,超出下标会报错,python3版本默认删除最后一个元素。
- 基本格式:
li = ['a', 'b', 'c', 'd', 'e']
li.pop() # li = ['a', 'b', 'c', 'd']
li.pop(1) # li = ['a', 'c', 'd']2.4.3、remove
- 功能:根据元素的值进行删除,列表中不存在这个元素时就会报错,默认只会删除第一个指定的元素
- 基本格式:
li = ['a', 'b', 'c', 'd', 'e','a']
li.remove('a') # li = ['b', 'c', 'd', 'e', 'a']2.5、排序
2.5.1、sort
- 功能:将列表按特定顺序排列,默认从小到大,仅支持整型列表(所有元素都为整型int)。
- 基本格式:
li = [3,22,13,25,1]
li.sort() # li = [1,3,13,22,25]
#若要实现从大到小逆序排列
li.reverse()2.5.2、reverse
- 功能:将列表倒置(反转),并不是排序
- 基本格式:
li = ['3',22,13,25,1]
li.reverse() # li = [1,25,13,22,'3']3、列表推导式
3.1、格式一
[表达式 for 变量 in 可迭代对象]
# in 后面不仅可以放列表,还可以放range()函数、可迭代对象- 实例
li = []
#-------------常规写法----------------------
for i in range(10):
li.append(i)
#-------------列表推导式--------------------
[li.append(i) for i in range(10)]
3.2、格式二
[表达式 for 变量 in 可迭代对象 if 条件]- 实例:
#在格式一实例的基础上,只把奇数放进列表里面
li = []
#-------------常规写法---------------------
for i in range(10):
if(i%2==1):
li.append(i)
#-------------列表推导式----------------------
[li.append(i) for i in range(10) if (i%2==1)]
4、列表嵌套
- 含义:一个列表里面又有一个列表
- 实例:
li = [1,2,3,[4,5,6]]
print(li[3]) # 输出: [4, 5, 6]
print(li[3][0]) # 输出: 4
for i in li[3]:
print(i) # 输出: 4 5 6