gpt4 book ai didi

python - python 3.7 中 .append 函数的自动化

转载 作者:行者123 更新时间:2023-12-01 07:42:01 25 4
gpt4 key购买 nike

我有一个列表,其中包含不同长度的嵌套列表,范围从 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])

最佳答案

您也许可以使用itertools.combinations()在给定最大范围的情况下帮助生成唯一的对集。

类似于:

from itertools import combinations
list3 = ([7,5,6], [6,9,7], [7,8,4], [2,4,6,7,9])
list4 = []
for sublist in list3:
for (i, j) in combinations(range(len(sublist)), 2):
list4.append([sublist[i], sublist[j]])

为了提高效率,我建议使用列表理解:

list4 = [[sublist[i], sublist[j]] for sublist in list3 for (i, j) in combinations(range(len(sublist)), 2)]

有关列表推导式与使用 for 循环附加到列表的更多信息:Why is a list comprehension so much faster than appending to a list?

<小时/>

正如 @chepner 在下面的评论中指出的,combinations 接受任何可迭代对象,因此您可以简单地将其用作 combinations 的输入。我们也不需要附加单独的元素。我们可以生成我们需要的组合,从而生成一个列表,并且我们可以将所有内容连接在一起:

list4 = [t for sublist in list3 for t in combinations(sublist, 2)]

关于python - python 3.7 中 .append 函数的自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com