Python 列表的交集,查找长度

Python 列表的交集,查找长度,python,python-3.x,Python,Python 3.x,如果我们正在寻找两个列表的交集,我们通常会这样做 b1 = set(aList).intersection(aList2) print(b1) 但是,如果我们只想得到长度为4的两个单词列表的交集,该怎么办 比如说 所以如果 aList = ["james", "kobe", "ball"] 及 我希望b1是=[“科比”],因为科比的长度是4,而詹姆斯不是 我们需要先从列表中删除所有长度为4的单词吗?或者在交叉路口时有没有检查的方法?您可以使用: four_letter_intersectio

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

b1 = set(aList).intersection(aList2)
print(b1)
但是,如果我们只想得到长度为4的两个单词列表的交集,该怎么办

比如说

所以如果

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

我希望b1是=[“科比”],因为科比的长度是4,而詹姆斯不是

我们需要先从列表中删除所有长度为4的单词吗?或者在交叉路口时有没有检查的方法?

您可以使用:

four_letter_intersection = {
    word for word in set(list_a).intersection(list_b) if len(word) == 4
    }
  • 通过集合的交集方法得到公共元素
  • 使用列表理解仅获取长度为4的单词
  • 演示

    >>> 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的单词。

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

    演示:

    >>> 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']
    >>> 
    
    >>> 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'])
    >>>