查找列表项的公分母Python

2024-09-29 01:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我多次调用一个Python函数,它返回一个包含以下任一项的列表:

1)单次进入

2)多次输入

3)空白清单

例如:

a=['aaaaa']
b=['aaaaa', 'bbbbb', 'ccccc']
c=['aaaaa']
d=['ppppp', 'aaaaa']
e=['aaaaa', 'uuuuu']

现在,我想在所有列表中找到公共字符串。 我可以对两个列表执行以下操作:

^{pr2}$

可以一次完成多个列表吗?同时假设list“e”返回一个空列表,我只想忽略它。在

谢谢你


Tags: 函数字符串列表空白listaaaaapr2ppppp
3条回答

怎么样:

set.intersection(*(set(s) for s in list_of_lists if s))

例如:

^{pr2}$

一个更通用的实现,统计元素的出现次数并验证计数是否与列表计数匹配

>>> def find_common(*args):
    from collections import Counter
    from itertools import takewhile, imap
    from operator import itemgetter
    count = sum(1 for e in args if e)
    args = chain.from_iterable(args)
    result =  map(itemgetter(0), 
                   takewhile(lambda e: e[-1] ==  count,
                             Counter(args).most_common()))
    return result

>>> find_common(a,b,c,d,e)
['aaaaa']
>>> f = []
>>> find_common(a,b,c,d,e, f)
['aaaaa']

您可以使用^{}

>>> set(a).intersection(b, c, d, e)
set(['aaaaa'])

您可以使用list()将其转换回列表:

^{pr2}$

相关问题 更多 >