列表的交集,查找长度

时间:2015-04-10 03:28:16

标签: python python-3.x

如果我们正在寻找两个列表的交集,我们通常会这样做

b1 = set(aList).intersection(aList2)
print(b1)
然而,如果我们想要获得长度为4的两个单词列表的交集,那该怎么办?

例如。

所以,如果

aList = ["james", "kobe", "ball"]

aList2 = ["jimmy","james","kobe"]

我希望b1是= [" kobe"]因为kobe长度为4而詹姆斯不是

我们是否需要先从列表中取出长度为4的所有单词?或者在做交叉时有没有办法检查?

2 个答案:

答案 0 :(得分:2)

  1. 通过SET的交集方法获取公共元素。
  2. 使用列表理解仅获取长度为4的单词
  3. <强>演示

    >>> aList = ["james", "kobe", "ball"]
    >>> aList2 = ["jimmy","james","kobe"]
    >>> b1 = set(aList).intersection(aList2)
    >>> b1
    set(['james', 'kobe'])
    >>> result = [i for i in b1 if len(i)==4]
    >>> result
    ['kobe']
    >>> 
    

    仅传递交叉点操作的长度为4的单词。

    tmp创建aList列表,其中只有长度为4的字词。

    演示:

    >>> aList = ["james", "kobe", "ball"]
    >>> aList2 = ["jimmy","james","kobe"]
    >>> tmp = [i for i in aList if len(i)==4]
    >>> tmp
    ['kobe', 'ball']
    >>> b1 = set(tmp).intersection(aList2)
    >>> print b1
    set(['kobe'])
    >>> 
    

答案 1 :(得分:1)

您可以使用comprehension

four_letter_intersection = {
    word for word in set(list_a).intersection(list_b) if len(word) == 4
    }