列表

列表的格式

  1. [数据1,数据2,数据3,......]

列表可以一次性存储多个数据,且可以为不同的数据类型(一般存储同类型,便于操作)。

列表的常用操作

查找操作

下标

  1. name_list = ["Tom", "Lily", "Rose"]
  2. print(name_list[0]) # Tom
  3. print(name_list[1]) # Lily
  4. print(name_list[2]) # Rose

index()

返回指定数据所在位置的下标,如果查找的数据不存在,则报错

  1. 列表序列.index(指定数据,开始位置下标,结束位置下标)

count()

统计指定数据在当前列表中出现的次数

  1. 列表序列.count(指定数据)

len()

读取列表长度,即列表中数据的个数

  1. len(数据序列) # 返回列表长度

判断操作

in

判断指定数据是否在某个列表序列,是返回True,否则返回False

  1. 示例1
  2. name_list = ["Tom", "Lily", "Rose"]
  3. print("Lily" in name_list) # True
  4. print("Lilys" in name_list) # False
  5. 示例2
  6. name_list = ["Tom", "Lily", "Rose"]
  7. name = input("请输入您的名字:")
  8. if name in name_list:
  9. print("该用户名已存在!")
  10. else:
  11. print("该用户可以注册!")

not in

判断指定数据是否不在某个列表序列,不在返回True,否则返回False

  1. name_list = ["Tom", "Lily", "Rose"]
  2. print("Lily" in name_list) # True
  3. 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’]]

  1. <a name="QtT1q"></a>
  2. #### `extend()`
  3. **在列表结尾追加数据**。
  4. - **如果数据是一个序列,则将这个序列的数据逐一添加到列表**。
  5. ```python
  6. 列表序列.extend(数据)
  7. 示例:
  8. name_list = ["Tom", "Lily", "Rose"]
  9. # 单个数据
  10. name_list.extend("Xiao")
  11. print(name_list) # ['Tom', 'Lily', 'Rose', 'X', 'i', 'a', 'o']
  12. # 序列数据
  13. name_list.extend(["11", "22"])
  14. print(name_list) # ['Tom', 'Lily', 'Rose', 'X', 'i', 'a', 'o', '11', '22']

insert()

在指定位置插入数据

  1. 列表序列.insert(位置下标,数据)
  2. 示例:
  3. name_list = ["Tom", "Lily", "Rose"]
  4. name_list.insert(1, "Xiao") # ['Tom', 'Xiao', 'Lily', 'Rose']
  5. print(name_list)

删除操作

del

  1. del 目标
  2. 示例:
  3. name_list = ["Tom", "Lily", "Rose"]
  4. # 删除列表指定数据
  5. del name_list[1]
  6. print(name_list) # ['Tom', 'Rose']
  7. # 删除列表
  8. del name_list
  9. print(name_list) # name 'name_list' is not defined

pop()返回删除

删除指定下标的数据(默认是最后一个),并返回被删除的数据

  1. 列表序列.pop(下标)
  2. 示例:
  3. name_list = ["Tom", "Lily", "Rose"]
  4. temp_list = name_list.pop(1)
  5. print(temp_list) # "Lily"
  6. print(name_list) # ['Tom', 'Rose']

remove()匹配删除

移除列表中某个数据的第一个匹配项

  1. 列表序列.remove(数据)
  2. 示例:
  3. name_list = ["Tom", "Tom", "Lily", "Rose"]
  4. name_list.remove("Tom")
  5. print(name_list) # ["Tom", "Lily", "Rose"]

clear()

清空列表

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. name_list.clear()
  3. print(name_list) # []

修改操作

下标方式修改

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. name_list[2] = "Lilys"
  3. print(name_list) # ['Tom', 'Tom', 'Lilys', 'Rose']

reverse()逆序(排序)

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. name_list.reverse()
  3. print(name_list) # ['Rose', 'Lily', 'Tom', 'Tom']

sort()(排序)

  1. 列表序列.sort(key=None,reverse=False)
  2. 其中:
  3. reverse表示排序规则,reverse=True表示降序,reverse=False表示升序(默认)
  4. 示例:
  5. name_list = ["Tom", "Tom", "Lily", "Rose"]
  6. name_list.sort()
  7. print(name_list) # ['Lily', 'Rose', 'Tom', 'Tom']

复制操作

copy()

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. newNameList = name_list.copy()
  3. print(newNameList) # ['Tom', 'Tom', 'Lily', 'Rose']

列表的循环遍历

依次打印列表中的各个数据

while遍历

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. i = 0
  3. while i < len(name_list):
  4. print(name_list[i], end="\t") # 遍历name_list
  5. i += 1
  6. print()

for遍历

遍历元素迭代方式

  1. name_list = ["Tom", "Tom", "Lily", "Rose"]
  2. for i in name_list:
  3. print(i, end="\t") # 遍历name_list
  4. print()

序列索引迭代方式

通过序列的索引对列表的数据进行遍历,使用range()

  1. fruits = ['banana', 'apple', 'mango']
  2. for index in range(len(fruits)):
  3. print ('当前水果 : %s' % fruits[index])
  4. # 输出结果如下:
  5. """
  6. 当前水果 : banana
  7. 当前水果 : apple
  8. 当前水果 : mango
  9. """

for...else...方式

else语句在循环正常结束后执行执行**break**语句除外,与**while...else...**功能相同)。

  1. for num in range(10,20): # 迭代 10 到 20 之间的数字
  2. for i in range(2,num): # 根据因子迭代
  3. if num%i == 0: # 确定第一个因子
  4. j=num/i # 计算第二个因子
  5. print ('%d 等于 %d * %d' % (num,i,j))
  6. break # 跳出当前循环
  7. else: # 循环的 else 部分
  8. print ('%d 是一个质数' % num)
  9. # 输出结果如下:
  10. """
  11. 10 等于 2 * 5
  12. 11 是一个质数
  13. 12 等于 2 * 6
  14. 13 是一个质数
  15. 14 等于 2 * 7
  16. 15 等于 3 * 5
  17. 16 等于 2 * 8
  18. 17 是一个质数
  19. 18 等于 2 * 9
  20. 19 是一个质数
  21. """

列表嵌套

所谓列表嵌套,指的是一个列表里包含了其他的子列表

  1. name_list = [["Tom", "Lily", "Rose"], ["张三", "李四", "王五"], ["xiaohong", "xiaolv", "xiaobai"]]
  2. print(name_list[0][1]) # Lily
  1. # 实现将8位老师随机分配到3个办公室,并把分配结果分别打印
  2. import random
  3. teachers = ["A", "B", "C", "D", "E", "F", "G", "H"]
  4. offices = [[], [], []]
  5. for name in teachers:
  6. num = random.randint(0, 2)
  7. offices[num].append(name)
  8. # 验证
  9. # print(offices)
  10. i = 1
  11. # 嵌套for循环遍历列表嵌套
  12. for office in offices:
  13. print(f"办公室{i}的人数是{len(office)},老师分别是:")
  14. for name in office:
  15. print(name)
  16. i += 1

元组

列表与元组的异同

  • 列表可以一次性存储多个数据,但是列表中的数据允许修改;
  • 元组可以一次性存储多个数据,但元组内的数据不可修改

    元组的特点

    定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型(一般存储同类型,便于操作)。 ```python

    定义多个数据元组

    t1 = (10, 20, “30”)

定义单个数据元组

t2 = (10,) # 加逗号,表示数据类型为元组

t3 = (10) # 无逗号,表示该数据的数据类型是单个数据的类型,即int

print(type(t1)) # tuple print(type(t2)) # tuple print(type(t3)) # int

  1. <a name="qozoH"></a>
  2. ## 元组的常见操作
  3. 元组数据不支持修改,**只支持查找**。
  4. <a name="JQCEv"></a>
  5. ### 下标
  6. ```python
  7. tuple1 = ("aa", "bb", "cc")
  8. print(tuple1[0]) # aa

index()

返回指定数据所在位置的下标,如果查找的数据不存在,则报错

  1. tuple1 = ("aa", "bb", "cc")
  2. print(tuple1.index("aa")) # aa

count()

统计指定数据在当前列表中出现的次数

  1. tuple1 = ("aa", "bb", "cc")
  2. print(tuple1.count("bb")) # 1

len()

读取元组长度,即元组中数据的个数

  1. tuple1 = ("aa", "bb", "cc")
  2. print(len(tuple1)) # 3

元组数据的修改操作

  • 元组内的直接数据,如果修改会立即报错;
  • 但如果元组内有列表,修改列表内的数据是允许的
    1. tuple1 = ("aa", "bb", "cc", ["ab", "ac", "ad"])
    2. print(tuple1) # ('aa', 'bb', 'cc', ['ab', 'ac', 'ad'])
    3. # tuple1[1] = "hh" # error
    4. tuple1[3][1] = "hh"
    5. print(tuple1) # ('aa', 'bb', 'cc', ['ab', 'hh', 'ad'])