⬅ 返回

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 defined

2.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