列表
列表的格式
[数据1,数据2,数据3,......]
列表可以一次性存储多个数据,且可以为不同的数据类型(一般存储同类型,便于操作)。
列表的常用操作
查找操作
下标
name_list = ["Tom", "Lily", "Rose"]
print(name_list[0]) # Tom
print(name_list[1]) # Lily
print(name_list[2]) # Rose
index()
返回指定数据所在位置的下标,如果查找的数据不存在,则报错。
列表序列.index(指定数据,开始位置下标,结束位置下标)
count()
统计指定数据在当前列表中出现的次数。
列表序列.count(指定数据)
len()
读取列表长度,即列表中数据的个数。
len(数据序列) # 返回列表长度
判断操作
in
判断指定数据是否在某个列表序列,是返回True
,否则返回False
。
示例1:
name_list = ["Tom", "Lily", "Rose"]
print("Lily" in name_list) # True
print("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) # True
print("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_list
print(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 = 0
while i < len(name_list):
print(name_list[i], end="\t") # 遍历name_list
i += 1
print()
for
遍历
遍历元素迭代方式
name_list = ["Tom", "Tom", "Lily", "Rose"]
for i in name_list:
print(i, end="\t") # 遍历name_list
print()
序列索引迭代方式
通过序列的索引对列表的数据进行遍历,使用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 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数
"""
列表嵌套
所谓列表嵌套,指的是一个列表里包含了其他的子列表。
name_list = [["Tom", "Lily", "Rose"], ["张三", "李四", "王五"], ["xiaohong", "xiaolv", "xiaobai"]]
print(name_list[0][1]) # Lily
# 实现将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)
# 验证
# 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>
### 下标
```python
tuple1 = ("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" # error
tuple1[3][1] = "hh"
print(tuple1) # ('aa', 'bb', 'cc', ['ab', 'hh', 'ad'])