Python 列表理解与交叉问题

Python 列表理解与交叉问题,python,python-3.x,list,set,intersection,Python,Python 3.x,List,Set,Intersection,有没有人知道如何写这篇文章,这样我们就不需要事先知道我们将得到多少个列表?ie 5没有硬编码 每个a都是一个大小不同的列表。只要您至少有一个a集,就可以执行以下操作: list(set(a[0]) & set(a[1]) & set(a[2]) & set(a[3]) & set(a[4])) 如果可能没有集合,那么您必须自己决定在应用程序中没有集合的交集实际上意味着什么。如果需要空集,请执行以下操作: list(set(a[0]).intersection(*

有没有人知道如何写这篇文章,这样我们就不需要事先知道我们将得到多少个列表?ie 5没有硬编码


每个a都是一个大小不同的列表。

只要您至少有一个a集,就可以执行以下操作:

list(set(a[0]) & set(a[1]) & set(a[2]) & set(a[3]) & set(a[4]))
如果可能没有集合,那么您必须自己决定在应用程序中没有集合的交集实际上意味着什么。如果需要空集,请执行以下操作:

list(set(a[0]).intersection(*a[1:]))

只要您至少有一套,就可以执行以下操作:

list(set(a[0]) & set(a[1]) & set(a[2]) & set(a[3]) & set(a[4]))
如果可能没有集合,那么您必须自己决定在应用程序中没有集合的交集实际上意味着什么。如果需要空集,请执行以下操作:

list(set(a[0]).intersection(*a[1:]))

我认为值得注意的是,至少为了提高人们对编程的一般理解,您想要做的可以描述为映射,然后减少或折叠。具体地说,您希望将集合映射到一个对象上,然后将结果折叠

我不是Python专家,但在Python中可以这样做:

list(set(*a[:1]).intersection(*a[1:]))

请注意,此实现要求a必须是非空的。

我认为值得注意的是,至少为了提高人们对编程的一般理解,您要做的可以描述为映射,然后缩小或折叠。具体地说,您希望将集合映射到一个对象上,然后将结果折叠

我不是Python专家,但在Python中可以这样做:

list(set(*a[:1]).intersection(*a[1:]))

请注意,此实现要求a必须是非空的。

如果您坚持这样做,请使用。不要将lambda绑定到名称。我并不坚持在Python中这样做,只是想演示一下一般的概念。无论如何,谢谢你的提醒!我不知道接线员的事。为什么不将lambda表达式绑定到名称上呢?因为这样它们就不再是匿名函数了。它可以是一个def,在Python中,def没有那么严重。不要将lambda绑定到名称。我并不坚持在Python中这样做,只是想演示一下一般的概念。无论如何,谢谢你的提醒!我不知道接线员的事。为什么不将lambda表达式绑定到名称上呢?因为这样它们就不再是匿名函数了。它可以是一个def,在Python中,def没有那么严重。如果列表至少包含一个集合,那么根本不需要对列表进行切片。listset.intersection*a就可以了。如果列表可以为空,则执行:a和listset.intersection*a.@blhsing True,但这只是偶然的。我也见过很多次这样的错误,人们不理解“set”对象的描述符“交集”需要一个参数。最好在这里有一个索引器。如果列表至少包含一个集合,则根本不需要对列表进行切片。listset.intersection*a就可以了。如果列表可以为空,则执行:a和listset.intersection*a.@blhsing True,但这只是偶然的。我也见过很多次这样的错误,人们不理解“set”对象的描述符“交集”需要一个参数。这里最好有一个索引器。