我有一个嵌套列表,长度从3到105不等。我想根据这个新列表创建一个包含原始列表中所有对的组合的列表,格式如下:从[7,5,6]到[7,5],[7,6],[5,6]
我使用了下面的代码,但是这对于列表中的105个值是不可行的。有没有一种算法可以使这个过程自动化?你知道吗
list3 = ([7,5,6], [6,9,7], [7,8,4], [2,4,6,7,9])
list4 = []
for sublist in list3:
if len(sublist) == 3:
list4.append([sublist[0], sublist[1])
list4.append([sublist[0], sublist[2])
list4.append([sublist[1], sublist[2])
您也许可以使用^{} 来帮助生成给定最大范围的唯一对集。你知道吗
比如:
为了提高效率,我建议使用列表理解:
更多关于列表的理解,而不是使用
for
循环附加到列表:Why is a list comprehension so much faster than appending to a list?正如@chepner在下面的评论中指出的,
combinations
接受任何iterable,因此您可以简单地将其作为combinations
的输入。我们也不需要附加单个元素。我们可以生成所需的组合,这些组合将生成一个列表,我们可以将所有内容连接在一起:相关问题 更多 >
编程相关推荐