目录
1、格式
[数据1, 数据2, 数据3, ........]
2、常用操作
1、查找
下标,list[0]这种
函数
index(),如果找不到,会报错
count()
这两个同字符串中的功能作用一样
len()访问列表长度,即列表中数据的个数
list = ['sda', 'sdg', 'tyh', 'gra00']
print(len(list))
4
判断是否存在
in:判断指定数据在某个列表序列,如果在返回True, 否则返回False
not in:判断指定数据不在某个列表序列,如果在返回True, 否则返回False
list = ['sda', 'sdg', 'tyh', 'gra00']
print('uthu' in list)
print('thu' not in list)
False
True
2、增加
增加指定数据到列表中
append()
列表结尾追加数据
序列.append(数据)
list = ['sda', 'sdg', 'tyh', 'gra00']
list.append('xiaoming')
print(list)
['sda', 'sdg', 'tyh', 'gra00', 'xiaoming']
所以列表的数据的可变类型,这与字符串不同。
list = ['sda', 'sdg', 'tyh', 'gra00']
list.append([123,453])
print(list)
['sda', 'sdg', 'tyh', 'gra00', [123, 453]]
追加列表也行
extend()
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
序列.extend(数据)
list = ['sda', 'sdg', 'tyh', 'gra00']
list.extend([123,453])
print(list)
['sda', 'sdg', 'tyh', 'gra00', 123, 453]这是追加列表的情况
list = ['sda', 'sdg', 'tyh', 'gra00']
list.extend('trfsds')
print(list)
['sda', 'sdg', 'tyh', 'gra00', 't', 'r', 'f', 's', 'd', 's']追加字符串则是这个状况
insert()
指定位置新增数据
序列.insert(位置下标, 数据)
list = ['sda', 'sdg', 'tyh', 'gra00']
list.insert(2, 'trfsds')
print(list)
['sda', 'sdg', 'trfsds', 'tyh', 'gra00']
3、删除
del
list1 = ['sda', 'sdg', 'tyh', 'gra00']
del list1
del (list1)
print(list1)
都是报错。两种书写形式。还可以删除指定的部分数据
pop()
删除指定下标的数据(默认为最后一个),并返回该数据。可指定,不指定时默认删除最后一个。pop函数有返回值,返回这个被删除的数据。用一个变量来接收它。
list1 = ['sda', 'sdg', 'tyh', 'gra00']
my_list = list1.pop()
print(my_list)
print(list1)
gra00
['sda', 'sdg', 'tyh']
remove()
移除列表中某个数据的第一个匹配项
list1 = ['sda', 'sdg', 'tyh', 'gra00']
list1.remove('sda')
print(list1)
['sdg', 'tyh', 'gra00']
remove的括号里不可省略,否则报错
clear()
清空列表
list1 = ['sda', 'sdg', 'tyh', 'gra00']
list1.clear()
print(list1)
[]
只剩下括号
4、修改
reverse()
list1 = ['sda', 'sdg', 'tyh', 'gra00']
list1.reverse()
print(list1)
['gra00', 'tyh', 'sdg', 'sda']
sort()
做排序时用,升序和降序
语法:序列.sort(key=None, reverse=False)
reverse表示排序规则,reverse = True降序,= False升序(默认)。key需要用到字典,暂且不写它。
list1 = [1, 2, 3, 4, 5, 6, 7]
list1.sort(reverse=True)
print(list1)
[7, 6, 5, 4, 3, 2, 1]
5、复制
copy()
list1 = [1, 2, 3, 4, 5, 6, 7]
list2 = list1.copy()
print(list2)
[1, 2, 3, 4, 5, 6, 7]
6、循环
while
list1 = [1, 2, 3, 4, 5, 6, 7]
i = 0
while i < len(list1):
print(list1[i])
i += 1
1
2
3
4
5
6
7
for
list1 = [1, 2, 3, 4, 5, 6, 7]
for i in list1:
print(i)
1
2
3
4
5
6
7
循环删除时,有一个问题,如果要删除的两个元素挨在一起,那么删除后第二个要删的就不会被删除。因为删除时,相当于有个指针指向要删除的位置,当这个元素被删除后,下一个元素就会往前走,指针指向这个过来的元素,然后循环一下,指针往后走,就指向了下一个元素,所以连续的两个元素就不会被全部删除。应对方法就是拷贝到一个新列表中,遍历新列表,找到要删除的元素,然后去原列表中删除,这样就好了,新列表不做删除动作。
7、嵌套
列表嵌套就是一个列表包含若干个子列表
mylist = [[1, 2, 3], ['a', 'b', 'c'], [9000, 8100, 870]]
print(mylist[0])
print(mylist[0][1])
print(mylist[0][1][0])
[1, 2, 3]
2
Traceback (most recent call last):
File "E:\codes\first.py", line 4, in <module>
print(mylist[0][1][0])
TypeError: 'int' object is not subscriptable
【0】取到第一个子列表,然后【1】去子列表第二个数据,第二个数据是一个数字,不是列表,所以[0]错误。如果想改变列表中某一个子列表的字符的大小写,不能直接list.upper(),得写成list = list.upper()。
3、应用——随机分配
8个老师分配到3个办公室
import random
teachers = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
offices = [[], [], []]
for name in teachers:
num = random.randint(0, 2)
offices[num].append(name)
i = 1
for office in offices:
print(f'办公室{i}的人数是{len(office)}, 老师分别是:')
for name in office:
print(name)
i += 1
办公室1的人数是4, 老师分别是:
a
b
e
h
办公室2的人数是1, 老师分别是:
d
办公室3的人数是3, 老师分别是:
c
f
g
结束。