有没有更“逻辑”的形式来编程这个函数?

2024-04-25 07:21:24 发布

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

我终于让这个工作,但我不喜欢我的解决方案是像“别人检查有多少名单存在”和编写代码。你知道吗

它可以在所有列表中找到公共项。你知道吗

我试着用递归,但没能成功

def comunes (*lista):
  word = ""
  for i in lista:
    word = "set({})".format(i) + " &" + word
  word = word.split(" ")
  word.pop()
  wordF = ""
  for i in word:
    wordF += str(i)
  if len(eval(wordF)) == 0:
    return None
  else:
    return eval (wordF)

Tags: 代码informat列表forreturndefeval
1条回答
网友
1楼 · 发布于 2024-04-25 07:21:24
def comunes(*lista):
    commons = set(lista[0])
    for i in lista[1:]:
        commons &= set(i)
    return commons

这个函数用第一个列表的所有元素创建一个集合commons,然后为每个下一个列表icommons的交集(&运算符)替换commonsi的集合。两个集合的交集是只包含第一个第二个集合中的元素的集合。这将确保commons只有传递给comunes的所有列表中的元素。你知道吗

相关问题 更多 >