首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表组合

Python列表组合
EN

Stack Overflow用户
提问于 2019-08-08 13:46:07
回答 2查看 78关注 0票数 3

我有多个名单:

代码语言:javascript
复制
A=[1,2,3,4,5]
B=[6,7]
C=[8,9,10]

每个列表中的列表数和元素数可能有所不同。

我正在寻找一个变量ABC,它应该包含一个列表,它是所有列表的所有值的组合,从C到B附加到A(从右到左),如下所示。我能拿到这个吗?

代码语言:javascript
复制
ABC=[168,169,1610,178,179,1710,268,269,2610,278,279,2710,........,578,579,5710]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-08 13:53:12

这是一个变体:

代码语言:javascript
复制
from itertools import product

ret = [int(f'{a}{b}{c}') for a, b, c in product(A, B, C)]

使用itertools.product

如果您需要对可变数量的列表进行这一操作,您可以这样做:

代码语言:javascript
复制
lists = [A, B, C]  # D, E, F, ...]
ret = [int(''.join(str(item) for item in items)) for items in product(*lists)]

(或者在下面的评论中查看一下DSM的版本)。

票数 2
EN

Stack Overflow用户

发布于 2019-08-08 14:14:12

你也可以这样做。

在这里,您可以传递任意数量的整数列表(不同的数字)以进行函数并获得所需的新数字列表。

代码语言:javascript
复制
import itertools

def get_combined_number(*group):
    return int("".join(str(num) for num in group)) 

def get_numbers(*numbers_list):
    numbers = []
    for group in itertools.product(*numbers_list):
        numbers.append(get_combined_number(*group)) 

    return numbers

# Test case 1st
A=[1,2,3,4,5]
B=[6,7]
C=[8,9,10]

numbers = get_numbers(A, B, C)  # Any number of arrays/list can be passed
print(numbers) # [168, 169, 1610, 178, 179, 1710, 268, 269, 2610, 278, 279, 2710, 368, 369, 3610, 378, 379, 3710, 468, 469, 4610, 478, 479, 4710, 568, 569, 5610, 578, 579, 5710]

# Test case 2nd
D = [1, 4, 9]
E = [2, 7, 1729]
F = [8, 9,11]
G = [ 45, 92, 4, 12, 67]
numbers = get_numbers(D, E, F, G)
print(numbers) # [12845, 12892, 1284, 12812, 12867, 12945, 12992, 1294, 12912, 12967, 121145, 121192, 12114, 121112, 121167, 17845, 17892, 1784, 17812, 17867, 17945, 17992, 1794, 17912, 17967, 171145, 171192, 17114, 171112, 171167, 11729845, 11729892, 1172984, 11729812, 11729867, 11729945, 11729992, 1172994, 11729912, 11729967, 117291145, 117291192, 11729114, 117291112, 117291167, 42845, 42892, 4284, 42812, 42867, 42945, 42992, 4294, 42912, 42967, 421145, 421192, 42114, 421112, 421167, 47845, 47892, 4784, 47812, 47867, 47945, 47992, 4794, 47912, 47967, 471145, 471192, 47114, 471112, 471167, 41729845, 41729892, 4172984, 41729812, 41729867, 41729945, 41729992, 4172994, 41729912, 41729967, 417291145, 417291192, 41729114, 417291112, 417291167, 92845, 92892, 9284, 92812, 92867, 92945, 92992, 9294, 92912, 92967, 921145, 921192, 92114, 921112, 921167, 97845, 97892, 9784, 97812, 97867, 97945, 97992, 9794, 97912, 97967, 971145, 971192, 97114, 971112, 971167, 91729845, 91729892, 9172984, 91729812, 91729867, 91729945, 91729992, 9172994, 91729912, 91729967, 917291145, 917291192, 91729114, 917291112, 917291167]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57414124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档