【超简便的Python】 提取两个列表的共同元素

简介: 【超简便的Python】 提取两个列表的共同元素

可以直接食用的代码:


def duplicate_removal(self, A, B):
    return set(A).intersection(set(B))

Python如何提取两个列表的共同元素?也就是取两个集合的交集。除了常规的循环外,Python提供了一些更简洁更美的表达法,比如可以用列表解析的方法,或者用 Python 内置的集合运算。


比如已有如下两个列表,Python如何提取两个列表的共同元素?


[1, 2, 3, 4, 5]

[4, 5, 6, 7, 8]

希望能得到


[4, 5]


方法一,列表解析


可以用列表解析, List comprehension 下的方法:


A = [1, 2, 3, 4, 5]
B = [4, 5, 6, 7, 8]
print([x for x in A if x in B]) # [4, 5]


方法二,集合运算


还可以用Python 的集合(set)运算,s.intersection(t) 返回s与t的交集


A = [1, 2, 3, 4, 5]
B = [4, 5, 6, 7, 8]
print(set(A).intersection(set(B))) # {4, 5}


番外:笨重的方法(顺便看看不推荐使用):


lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
a = set(lst1)   # 转成元祖
b = set(lst2)
c = (a & b)  # 集合c和b中都包含了的元素
print('两个列表中相同的元素是:', end='')
for i in c:
    print(i, end=' ')
# fo循环实现方法
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
for i in lst1:
    if i in lst2:
        print(i, end=' ')
# fo循环嵌套实现方法
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
for i in lst1:
    for j in lst2:
        if i == j:
            print(i, end=' ')


相关文章
|
6天前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
17 1
|
2天前
|
索引 Python
Python中,元素
【7月更文挑战第13天】Python中,元素
9 5
|
3天前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
6 1
|
5天前
|
Python
列表推导式(解析式)python
列表推导式(解析式)python
|
14天前
|
Python 容器
python 元组、列表解包
【7月更文挑战第1天】
12 1
|
17天前
|
安全 Python 容器
Python中解包元素数量匹配
【6月更文挑战第21天】
17 2
|
17天前
|
存储 索引 Python
字符串、列表、元组、字典(python)
字符串、列表、元组、字典(python)
|
13天前
|
开发者 Python
震撼!深入理解Python数据类型后,我才明白为什么大神都用列表推导式
【7月更文挑战第2天】Python列表推导式是编程效率提升的秘密武器。它以简洁的一行代码替代循环和条件判断,创建新列表。不仅代码量减少、执行效率高,还提升了可读性和可维护性。列表推导式允许抽象复杂逻辑,支持嵌套,使问题解决更专注。掌握这一特性,让你的Python代码更“Pythonic”,向大神级别迈进!**
|
13天前
|
大数据 程序员 Python
Python数据类型大变身!掌握列表推导式与生成器,编程效率翻倍不是梦
【7月更文挑战第2天】在Python中,列表推导式和生成器是提升效率的利器。列表推导式以简洁方式处理循环和条件,如将偶数平方化简为一行代码,提高代码可读性。生成器则按需生成数据,减少内存占用,适合处理大数据。通过`yield`函数实现惰性求值,有效避免内存溢出。掌握这两者,能优化Python编程体验。
|
13天前
|
C++ Python
揭秘!Python高手都在用的数据类型秘籍,列表推导式让你告别繁琐循环
【7月更文挑战第2天】Python的列表推导式是高手必备技巧,它让复杂的循环简化为一行代码,提升代码的可读性和效率。例如,要计算数字列表的平方,传统循环需使用`for`和`append()`,而列表推导式只需`[number ** 2 for number in numbers]`。此外,它还能结合条件表达式,如筛选并平方偶数:`[number ** 2 for number in numbers if number % 2 == 0]`。学会列表推导式,让你的Python代码更优雅、更易维护。