列表
列表的格式
[数据1,数据2,数据3,......]
列表可以一次性存储多个数据,且可以为不同的数据类型(一般存储同类型,便于操作)。
列表的常用操作
查找操作
下标
name_list = ["Tom", "Lily", "Rose"]print(name_list[0]) # Tomprint(name_list[1]) # Lilyprint(name_list[2]) # Rose
index()
返回指定数据所在位置的下标,如果查找的数据不存在,则报错。
列表序列.index(指定数据,开始位置下标,结束位置下标)
count()
统计指定数据在当前列表中出现的次数。
列表序列.count(指定数据)
len()
读取列表长度,即列表中数据的个数。
len(数据序列) # 返回列表长度
判断操作
in
判断指定数据是否在某个列表序列,是返回True,否则返回False。
示例1:name_list = ["Tom", "Lily", "Rose"]print("Lily" in name_list) # Trueprint("Lilys" in name_list) # False示例2:name_list = ["Tom", "Lily", "Rose"]name = input("请输入您的名字:")if name in name_list:print("该用户名已存在!")else:print("该用户可以注册!")
not in
判断指定数据是否不在某个列表序列,不在返回True,否则返回False。
name_list = ["Tom", "Lily", "Rose"]print("Lily" in name_list) # Trueprint("Lilys" not in name_list) # True
增加操作(插入)
append()
在列表结尾追加数据。
- 若追加的是一个序列,则在列表结尾追加整个序列到列表。 ```python 列表序列.append(追加的数据)
示例: name_list = [“Tom”, “Lily”, “Rose”]
单个数据
name_list.append(“Xiaoming”) # 追加字符串 print(name_list) # [‘Tom’, ‘Lily’, ‘Rose’, ‘Xiaoming’]
序列数据
name_list.append([“11”, “22”]) # 追加序列 print(name_list) # [‘Tom’, ‘Lily’, ‘Rose’, ‘Xiaoming’, [‘11’, ‘22’]]
<a name="QtT1q"></a>#### `extend()`**在列表结尾追加数据**。- **如果数据是一个序列,则将这个序列的数据逐一添加到列表**。```python列表序列.extend(数据)示例:name_list = ["Tom", "Lily", "Rose"]# 单个数据name_list.extend("Xiao")print(name_list) # ['Tom', 'Lily', 'Rose', 'X', 'i', 'a', 'o']# 序列数据name_list.extend(["11", "22"])print(name_list) # ['Tom', 'Lily', 'Rose', 'X', 'i', 'a', 'o', '11', '22']
insert()
在指定位置插入数据。
列表序列.insert(位置下标,数据)示例:name_list = ["Tom", "Lily", "Rose"]name_list.insert(1, "Xiao") # ['Tom', 'Xiao', 'Lily', 'Rose']print(name_list)
删除操作
del
del 目标示例:name_list = ["Tom", "Lily", "Rose"]# 删除列表指定数据del name_list[1]print(name_list) # ['Tom', 'Rose']# 删除列表del name_listprint(name_list) # name 'name_list' is not defined
pop()返回删除
删除指定下标的数据(默认是最后一个),并返回被删除的数据。
列表序列.pop(下标)示例:name_list = ["Tom", "Lily", "Rose"]temp_list = name_list.pop(1)print(temp_list) # "Lily"print(name_list) # ['Tom', 'Rose']
remove()匹配删除
移除列表中某个数据的第一个匹配项。
列表序列.remove(数据)示例:name_list = ["Tom", "Tom", "Lily", "Rose"]name_list.remove("Tom")print(name_list) # ["Tom", "Lily", "Rose"]
clear()
清空列表。
name_list = ["Tom", "Tom", "Lily", "Rose"]name_list.clear()print(name_list) # []
修改操作
下标方式修改
name_list = ["Tom", "Tom", "Lily", "Rose"]name_list[2] = "Lilys"print(name_list) # ['Tom', 'Tom', 'Lilys', 'Rose']
reverse()逆序(排序)
name_list = ["Tom", "Tom", "Lily", "Rose"]name_list.reverse()print(name_list) # ['Rose', 'Lily', 'Tom', 'Tom']
sort()(排序)
列表序列.sort(key=None,reverse=False)其中:reverse表示排序规则,reverse=True表示降序,reverse=False表示升序(默认)示例:name_list = ["Tom", "Tom", "Lily", "Rose"]name_list.sort()print(name_list) # ['Lily', 'Rose', 'Tom', 'Tom']
复制操作
copy()
name_list = ["Tom", "Tom", "Lily", "Rose"]newNameList = name_list.copy()print(newNameList) # ['Tom', 'Tom', 'Lily', 'Rose']
列表的循环遍历
while遍历
name_list = ["Tom", "Tom", "Lily", "Rose"]i = 0while i < len(name_list):print(name_list[i], end="\t") # 遍历name_listi += 1print()
for遍历
遍历元素迭代方式
name_list = ["Tom", "Tom", "Lily", "Rose"]for i in name_list:print(i, end="\t") # 遍历name_listprint()
序列索引迭代方式
通过序列的索引对列表的数据进行遍历,使用range()。
fruits = ['banana', 'apple', 'mango']for index in range(len(fruits)):print ('当前水果 : %s' % fruits[index])# 输出结果如下:"""当前水果 : banana当前水果 : apple当前水果 : mango"""
for...else...方式
else语句在循环正常结束后执行(执行**break**语句除外,与**while...else...**功能相同)。
for num in range(10,20): # 迭代 10 到 20 之间的数字for i in range(2,num): # 根据因子迭代if num%i == 0: # 确定第一个因子j=num/i # 计算第二个因子print ('%d 等于 %d * %d' % (num,i,j))break # 跳出当前循环else: # 循环的 else 部分print ('%d 是一个质数' % num)# 输出结果如下:"""10 等于 2 * 511 是一个质数12 等于 2 * 613 是一个质数14 等于 2 * 715 等于 3 * 516 等于 2 * 817 是一个质数18 等于 2 * 919 是一个质数"""
列表嵌套
所谓列表嵌套,指的是一个列表里包含了其他的子列表。
name_list = [["Tom", "Lily", "Rose"], ["张三", "李四", "王五"], ["xiaohong", "xiaolv", "xiaobai"]]print(name_list[0][1]) # Lily
# 实现将8位老师随机分配到3个办公室,并把分配结果分别打印import randomteachers = ["A", "B", "C", "D", "E", "F", "G", "H"]offices = [[], [], []]for name in teachers:num = random.randint(0, 2)offices[num].append(name)# 验证# print(offices)i = 1# 嵌套for循环遍历列表嵌套for office in offices:print(f"办公室{i}的人数是{len(office)},老师分别是:")for name in office:print(name)i += 1
元组
列表与元组的异同
- 列表可以一次性存储多个数据,但是列表中的数据允许修改;
- 元组可以一次性存储多个数据,但元组内的数据不可修改。
元组的特点
定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型(一般存储同类型,便于操作)。 ```python定义多个数据元组
t1 = (10, 20, “30”)
定义单个数据元组
t2 = (10,) # 加逗号,表示数据类型为元组
t3 = (10) # 无逗号,表示该数据的数据类型是单个数据的类型,即int
print(type(t1)) # tuple print(type(t2)) # tuple print(type(t3)) # int
<a name="qozoH"></a>## 元组的常见操作元组数据不支持修改,**只支持查找**。<a name="JQCEv"></a>### 下标```pythontuple1 = ("aa", "bb", "cc")print(tuple1[0]) # aa
index()
返回指定数据所在位置的下标,如果查找的数据不存在,则报错。
tuple1 = ("aa", "bb", "cc")print(tuple1.index("aa")) # aa
count()
统计指定数据在当前列表中出现的次数。
tuple1 = ("aa", "bb", "cc")print(tuple1.count("bb")) # 1
len()
读取元组长度,即元组中数据的个数。
tuple1 = ("aa", "bb", "cc")print(len(tuple1)) # 3
元组数据的修改操作
- 元组内的直接数据,如果修改会立即报错;
- 但如果元组内有列表,修改列表内的数据是允许的。
tuple1 = ("aa", "bb", "cc", ["ab", "ac", "ad"])print(tuple1) # ('aa', 'bb', 'cc', ['ab', 'ac', 'ad'])# tuple1[1] = "hh" # errortuple1[3][1] = "hh"print(tuple1) # ('aa', 'bb', 'cc', ['ab', 'hh', 'ad'])
