Python list的交、并、差与排序

求list的交集、并集、差集

set() 函数创建一个无序不重复元素集,通过set可方便求取list的交并差,并可去重

# 通过set 集合
>>> list1 = [1,2,3] 
>>> list2=[2,3,4]
>>> set1 = set(list1)
>>> set2 = set(list2)
>>> set1 & set2  # 交集
{2, 3}
>>> set1 | set2  # 并集
{1, 2, 3, 4}
>>> set1 - set2  # 差集
{4}
>>> set1 ^ set2  # 求差异元素
{1, 4}

>>> list1=list1.extend(list2) # 合并
>>> list1=list(set(list1)) # 去重
>>> list1
{1,2,3,4}

list排序 (可返回索引)

1. list内置函数sort

缺点: 原来list被重置;只可用于list

>>> a = [5, 2, 3, 1, 4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]

2. python内置的全局sorted()

  • 返回新的排序结果对象
  • 可对任意可迭代序列使用

基础排序:

reverse参数可调节升序降序,默认升序,reverse=True

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]

高级排序:

key参数:此函数将在每个元素比较前被调用,经处理后的结果作为排序的依据;

  • 用复杂对象的某些值来排序,例如:
>>> student_tuples = [
        ('john', 'A', 15),
        ('jane', 'B', 12),
        ('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
  • 返回排序后元素的索引
sorted_id = sorted(range(len(a)), key=lambda k: a[k], reverse=True)
print('元素索引序列:', sorted_id)

a: [1, 3, 4, 5, 2, 7, 9]
元素索引序列: [6, 5, 3, 2, 1, 4, 0]
posted @ 2024-04-24 15:34  溪柴  阅读(152)  评论(0)    收藏  举报