XX学Python·列表

# 列表定义格式:变量名 = [数据1,数据2,...]或a = list()用list方法
# 如果列表中只有一个元素,必须加逗号:变量名 = [数据,]
name_list = ['Rose', 'Jack', 'Tom']
print(name_list)  # ['Rose', 'Jack', 'Tom']
print(type(name_list))  # <class 'list'>

# 在Python中,列表可以储存不同数据类型的数据
# 但在开发中,为了处理方便,一个列表一般储存同种数据类型
list1 = ['name', 12, False, [1,2,3]]
print(list1)  # ['name', 12, False, [1, 2, 3]]

列表的查询

index,count,in,not in

name_list = ['Rose', 'Jack', 'Tom', 'Jack']
# 索引查询,和字符串完全一致
print(name_list[0])  # Rose
print(name_list[1])  # Jack
print(name_list[-2])  # Tom
# 利用索引进行切片
print(name_list[::-1])  # ['Jack', 'Tom', 'Jack', 'Rose']
print(name_list[1:3:1])  # ['Jack', 'Tom']
print(name_list)    # ['Rose', 'Jack', 'Tom', 'Jack'],对原列表无修改

# index从左至右查询指定元素的索引,返回第一次出现的正向索引,没有查询到报错
print(name_list.index('Jack'))  # 1

# count 计数,查询指定元素在列表中出现的次数
print(name_list.count('Jack'))  # 2次

# in 判断元素是否在列表里,在返回True,不在返回False
print('Jack' in name_list)  # True
# not in 判断元素是否不在列表里,不在返回True,在返回False
print('Jack' not in name_list)  # False

列表的增加

append,extend,insert。不会产生新的列表,都是在原有列表进行增加。

# append追加到列表末尾
num_list = [1, 2, 3, 4]
print(num_list.append(5))  # None,直接打印append方法的调用不会输出任何内容
# 因为list在使用append方法时不会产生新的列表,而是在原有列表上进行修改
print(num_list)  # [1, 2, 3, 4, 5]

# extend追加数据序列
# 格式:列表.extend(数据序列),括号里必须是可迭代对象
list1 = [1,2,3]
list2 = [4,5,6]
list1.extend(list2)
print(list1)  # [1, 2, 3, 4, 5, 6]
print(list2)  # [4, 5, 6]
# 追加字符串序列时,会将字母依次拆分放入列表中
str1 = 'love'
list2.extend(str1)
print(list2)  # [4, 5, 6, 'l', 'o', 'v', 'e']
# 括号内必须是可迭代对象
# list2.extend(7)  # TypeError: 'int' object is not iterable
list2.extend('7')
print(list2) # [4, 5, 6, 'l', 'o', 'v', 'e', '7']
list2.extend(['ai','ni'])
print(list2)  # [4, 5, 6, 'l', 'o', 'v', 'e', '7', 'ai', 'ni']

# insert指定索引插入,格式:列表.insert(插入位置索引,要插入的数据)
num_list1 = [100, 300, 400]
num_list1.insert(1,200)
print(num_list1)  # [100, 200, 300, 400]
# 在开发中除非明确所有索引引用都修改完成,否则不用使用insert。

# append和extend对比
list3 = [11,12,13]
list4 = [14,15,16]
# append将list4当作一个元素追加到列表末尾
list3.append(list4)  # [11, 12, 13, [14, 15, 16]]
# extend的将list4当作多个元素进行拆分追加
list3.extend(list4)  # [11, 12, 13, 14, 15, 16]

# 添加5
c_list = [1, 2, 3]
c_list += [5]
c_list.extend([5])
print(c_list)

列表中的删除

del list[下标],list.pop(下标),list.remove(删除内容),list.clear()

# del 将数据引用切断,格式:del 要删除内容
list1 = [1,2,3,4]
# del list1
# print(list1)  # NameError: name 'list1' is not defined
# del不仅可以删除元素,也可删除任何变量,非常强大,但有些不安全
del list1[2]  # 通过索引获取要删除的元素并删除,索引超出范围会报错
print(list1)  # [1, 2, 4]
# 如果是循环中能删除吗?
# 没删除,因为i是临时变量,这里是将i和2的引用关系删除,但list1和2的引用关系没删除
for i in list1:
    if i == 2:
        del i
print(list1)  # 还是[1, 2, 4],没有删除

# pop 删除指定索引元素,并返回该元素。
# 格式:列表.pop(要删除元素的索引),索引超出范围会报错
list2 = [11,12,13,14]
print(list2.pop(2))  # 删除后可返回被删除的对象为13
print(list2)  # [11, 12, 14]
print(list2.pop())  # 若不传值,默认删除最后一个元素为14
print(list2)  # [11, 12]

# remove 删除指定元素(从左至右第一次出现的元素)
# 格式:列表.remove(删除元素),没有会报错。
list3 = [3,4,5,6,7,8,5,5]
list3.remove(5)
print(list3)  # [3, 4, 6, 7, 8, 5, 5]

# clear 清空列表
# 将列表置为[],但与list3=[]有本质区别。后者是给了新的空间,以前的还在。
list3.clear()
print(list3)  # []

列表的修改

list[索引] = 修改后的值,list.reverse(),list.sort(key=排序规则函数,reverse=真或假)

# 通过索引进行修改格式:list[索引] = 修改后的值
list1 = [1,2,3,4]
list1[1] = 6  # 索引要存在,不然报错
print(list1)  # [1, 6, 3, 4]
list1[2], list1[3] = 7, 8  # 可使用对多个变量赋值的形式修改多个值
print(list1)  # [1, 6, 7, 8]

# reverse 列表的反转。格式:列表.reverse()
list2 = [1,2,3,4]
list2.reverse()  # print的话返回值是None
print(list2)  # [4, 3, 2, 1]原列表改变了

# sort 排序。格式:列表.sort(key=排序规则函数,reverse=真或假)
list3 = [2,6,43,2,41,421]
list3.sort()  # 默认排序为升序
print(list3)  # [2, 2, 6, 41, 43, 421]
# 降序方法一:先排序,再反转
list3 = [2,6,43,2,41,421]
list3.sort()
list3.reverse()
print(list3)
# 降序方法二:直接使用倒叙排列
list3 = [2,6,43,2,41,421]
list3.sort(reverse=True)
print(list3)
# 需求:根据list3中每个元素%7的余数大小进行排序(了解,后续还会讲)
list3 = [2,6,43,2,41,421]
list3.sort(key=lambda x: x % 7)
print(list3)

列表的遍历

# while遍历列表
# len()函数可以查询列表的长度

list1 = [12, 123, 1, 1, 1234, 12, 34, 8]
# print(len(list1))
i = 0
while i < len(list1):
    print(list1[i])
    i += 1

# for 遍历列表
# 推荐使用for循环遍历容器类型(数据序列)
for i in list1:
    print(i)

# 输出索引和对应元素
list = ['html', 'js', 'css', 'python']
for a, b in enumerate(list):
    print ("%s :%s" % (a, b))
# 结果为0 :html  1 :js  2 :css  3 :python

列表的嵌套

  • 列表中嵌套其他的子列表
name_list = [['小明', '小红', '小绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四', '王五']]
# 需求:获取值李四
print(name_list[2])  # 获取李四所在子列表
print(name_list[2][1])  # 再从子列表获取李四

# 需求:获取嵌套列表中的每一个值
for i in name_list:  # 这样获得的是一级列表中的元素,即子列表
    print(i)

for sub_list in name_list:  # 要获得嵌套后列表的元素,需要循环嵌套
    for name in sub_list:
        print(name)
posted @ 2022-10-04 22:44  PORTB  阅读(22)  评论(0编辑  收藏  举报