【python】list比较操作

1.相等比较
1.1 同顺序列表比较

顺序相同直接用“==”进行比较:

list1 = ["1.jpg","2.jpg","3.jpg"]
list2 = ["1.jpg","2.jpg","3.jpg"]

res = list1 == list2
print(res) # True
1.2 不同顺序列表比较

"=="只有成员、成员位置都相同时才返回True,但有时候我们希望只要成员相同、即使成员位置不同也能返回True

list1 = ["1.jpg","2.jpg","3.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg"]

res = list1 == list2
print(res) # False
1.2.1 使用列表sort()方法进行排序后比较
list1 = ["1.jpg","2.jpg","3.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg"]

list1.sort()==list2.sort()  #  True
print(list2)  # ["1.jpg","2.jpg","3.jpg"]
1.2.2使用sorted()方法进行排序后比较

上面的sort()方法会对列表成员进行重排,但有时候我们并不希望列表本身被改动。
我们可以用一下变量将原先的列表保存起来,但更好的做法是使用sorted()方法,sorted()不改变列表原本顺序而是新生成一个排序后的列表并返回。

list1 = ["1.jpg","2.jpg","3.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg"]

sorted(list1)==sorted(list2)  #  True
print(sorted(list2))  # ["1.jpg","2.jpg","3.jpg"]
2.包含比较

直接用列表本身进行包含类比较,只能用遍历的方法这是比较繁琐复杂的,使用set()转成集合进行包含比较就变得简单了。

2.1 判断列表是否包含另一列表
list1 = ["1.jpg","2.jpg","3.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg","4.jpg"]

set(list1).issubset(set(list2))    #  True
set(list2).issuperset(set(list1))  #  True
2.2 获取两个列表相同成员(交集)
list1 = ["1.jpg","2.jpg","3.jpg","5.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg","4.jpg"]

set(list1).intersection(set(list2)) # {'1.jpg', '2.jpg', '3.jpg'}
2.3 获取两个列表所有成员(并集)
list1 = ["1.jpg","2.jpg","3.jpg","5.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg","4.jpg"]

set(list1).union(set(list2)) # {'1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg'}
2.4 获取一个列表中不是另一个列表成员的成员(差集)
list1 = ["1.jpg","2.jpg","3.jpg","5.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg","4.jpg"]

set(list1).difference(set(list2)) # {'5.jpg'}
set(list2).difference(set(list1)) # {'4.jpg'}
2.5 获取两个列表不同成员
list1 = ["1.jpg","2.jpg","3.jpg","5.jpg"]
list2 = ["1.jpg","3.jpg","2.jpg","4.jpg"]

set(list1).symmetric_difference(set(list2)) # {'4.jpg', '5.jpg'}

参考
https://www.runoob.com/python3/python3-set.html

https://www.cnblogs.com/lsdb/p/10275657.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机器不学习我学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值