列表的使用方法

本教程所有配套资料索取方式如下:
点赞三连后Q裙搜索:652892456找管理员获取(或直接加小助理微信:python5180 ){备注:UR的出不克}
学习或其他资料也可+Q群:652892456,告别孤单,共同进步!

1 列表

  • 能够存储多个元素的容器

1.1 和Java中数组的区别

  • 列表的长度可变
  • 列表可存储不同类型的数据

1.2 创建列表

# 第1种创建列表的方式
x = [1 , 1, "nihao"] # 适用于已知列表元素
# 第2种创建列表的方式
y = []               # 适用于不知道列表将要存储哪些元素
z = list()

print(x)
print(y)
print(z)

1.3 增

x = [1, 2, 3, 4]
# 1、一次增加1个元素
# 追加元素,
x.append(5)
print(x)
# 插入元素
x.insert(1,"hello")
print(x)

# 2、一次增加多个元素
# 扩展
x.extend("nihao")
x.extend([1,2,3])
x.extend((4,5,6))
x.extend({7,8,9})
x.extend({"name":"zhangsan"})
print(x)

1.4 删

# 清空
x = ["a", "b", 'c', "d"]
x.clear()
print(x)
# 删除
x = ["a", "b", 'c', "d"]
del x
print(x)  # NameError: name 'x' is not defined

# 已知要被删除元素的索引
x = ["a", "b", 'c', "d"]
temp = x.pop()  # 删除最后1个元素
print(x)        # ['a', 'c', 'd']
print(temp)     # d
x.pop(0)        # 删除第1个元素
del x[0]		# 删除第1个元素
print(x)
# 不知道要被删除元素的索引,但知道要删除谁
x = ["a", "b", 'c', "d"]
x.remove("b")
print(x) # ['a', 'c', 'd']

1.5 改

# 修改:再赋值,没有replace方法
x = ["a", "b", 'c', "d"]
x[0] = 1
print(x)  # [1, "b", 'c', "d"]

1.6 查

x = ["a", "b", 'c', "d"]
# 1、查某1个元素
print(x[0])  # a
# 2、切片
print(x[0:2])  # ['a', 'b']
print(x[::2])  # ['a', 'c']

2 其他常用方法

2.1 copy

  • 浅复制
# 浅复制:复制的只是内存地址
x = ["a", "b", 'c', "d" ,[1,2]]
y = x.copy()
print(y)
x[-1].append(3)
print(y)
# ['a', 'b', 'c', 'd', [1, 2]]
# ['a', 'b', 'c', 'd', [1, 2, 3]]
  • 深复制
# 深复制:
import copy
x = ["a", "b", 'c', "d" ,[1,2]]
z = copy.deepcopy(x)
print(z)
x[-1].append(3)
print(z)
# ['a', 'b', 'c', 'd', [1, 2]]
# ['a', 'b', 'c', 'd', [1, 2]]

2.2 排序

  • 调用sort方法会原地排序,失去了原列表的顺序
# 升序
x = [4, 2, 3, 1]
x.sort()   # 依据:大小,默认升序
print(x)
# [1, 2, 3, 4]

# 降序
x = [4, 2, 3, 1]
x.sort(reverse = True)
print(x)
# [4, 3, 2, 1]

# 排序依据
x = ["ab", "abcd", "abc", "a"]
x.sort(key = len,reverse = True)   # 依据:长度,由大到小
print(x)
# ['abcd', 'abc', 'ab', 'a']
  • 调用sorted函数排序,保留了原列表的顺序
x = [4, 2, 3, 1]
y = sorted(x)
print(f"排序前的列表:{x}")
print(f"排序后的列表:{y}")
# 排序前的列表:[4, 2, 3, 1]
# 排序后的列表:[1, 2, 3, 4]

2.3 count

x = [1, 3, "a", "a"]
y = x.count("a")
print(y)
# 2

2.4 index

x = [1, 3, "a", "a"]
print(x.index("a"))
# 2

2.5 翻转

  • 调用reverse方法会原地翻转,失去了原列表的顺序
x = [1, 3, 2, 2]
x.reverse()
print(x)
# [2, 2, 3, 1]
  • 调用reversed函数翻转,保留了原列表的顺序
x = [1, 3, 2, 2]
y = list(reversed(x))
print(f"翻转前的列表:{x}")
print(f"翻转后的列表:{y}")
# 翻转前的列表:[1, 3, 2, 2]
# 翻转后的列表:[2, 2, 3, 1]

3 常用的函数

3.1 求最值等

# index:查看列表中某元素的数量
x = [1, 3, 4, 2]
print(len(x))
print(max(x))
print(min(x))
print(sum(x))

3.2 all、any

x = [0, "", {}, [] , () , 10]
# 查看所有元素是否为True
print(all(x))   # False
# 查看列表中是否存在元素为True
print(any(x))   # True

3.3 map映射

x,y,z= map(int,[1.2 , 2.5 , 3.3])
print(x)
print(y)
print(z)
# 1
# 2
# 3

temp = list(map(int,[1.2 , 2.5 , 3.3]))
print(temp)
# [1, 2, 3]
  • 使用map求解水仙花数
for i in range(100,1000):
    temp = list(map(int , str(i)))
    if temp[0]**3 + temp[1]**3 + temp[2]**3 == i:
        print(i)
# 153
# 370
# 371
# 407

4 列表的加法和乘法

x = [1, 3, 4, 2]
y = [1, 3, 4, 2]
print(x+y)
# [1, 3, 4, 2, 1, 3, 4, 2]
print(x * 3)
# [1, 3, 4, 2, 1, 3, 4, 2, 1, 3, 4, 2]

5 遍历列表元素

5.1 遍历列表的两种方式

x = [1, 3, 3, 2]
for i in x:
    print(i)

// 可以使用到索引这样有用的数据
for i in range(0,len(x)):
    print(x[i])

5.2 练习

  • 查询索引
# 1、从左边查,查第1个匹配目标值元素的索引
x = [1, 3, 3, 2]
for i in range(0,len(x)):
    if x[i] == 3:
        print(i)
        break
# 2、从左边查,查所有匹配目标值元素的索引
x = [1, 3, 3, 2]
for i in range(0,len(x)):
    if x[i] == 3:
        print(i)
# 3、从右边查,查第1个匹配目标值元素的索引
x = [1, 3, 3, 2]
for i in range(-1,-len(x),-1):
    if x[i] == 3:
        print(i)
        break
# -2
        
x = [1, 3, 3, 2]
for i in range(len(x)-1,0,-1):
    if x[i] == 3:
        print(i)
        break
# 2
  • 将两个变量对应位置的元素求和,添加到一个新列表中

    a = [0,1,2,3,4,5,6]

    b = [0,1,2,3,4,5,6]

6 列表推导式

  • 生成有规律数据集合
  • 作用:提高编程效率
# 生成[1,2,3,4,5,6,7,8,9,10]

# 方式1
x = [1,2,3,4,5,6,7,8,9,10]
# 方式2
y = []
for i in range(1,11):
    y.append(i)
print(y)
# 方式3
z = [i for i in range(1,11)]
print(z)

# 带有if的列表推导式
a = [i for i in range(1,101) if i % 2 == 1]
print(a)
# for循环嵌套的列表推导式
b = [(i,j) for i in [1,2,3] for j in ["a","b"]]
print(b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UR的出不克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值