简体   繁体   中英

Python lists combination

I have multiple lists:

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

The number of lists and the number of elements in each list can vary.

I am looking for a variable ABC which should contain a list that is a combination of all the values of all the lists, appending from C to B to A (appending from right to left) as shown below. Is there any way that I get this?

ABC=[168,169,1610,178,179,1710,268,269,2610,278,279,2710,........,578,579,5710]

this is a variant:

from itertools import product

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

using itertools.product .


if you need to have that for a variable number of lists you could do this:

lists = [A, B, C]  # D, E, F, ...]
ret = [int(''.join(str(item) for item in items)) for items in product(*lists)]

(alternatively have a look at DSM 's version of this in the comments below).

You can also try like this.

Here, you can pass any number of lists of integers (varying in numbers) to function and get the desired list of new numbers.

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]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM