简体   繁体   English

Python乘法数组串联

[英]Python Multiplicative Array Concatenating

If I have a array of an inconsistent size, lists that consists of an (inconsistent) amount of lists: 如果我有一个大小不一致,的阵列lists ,其由列表的(不一致)量的:

 lists = [List1, List2, List3,...ListN]

where each contained list is of inconsistent size. 每个包含的列表大小不一致的地方。

How can I concatenate the contents multiplicatively of each contained array. 如何将每个包含的数组的内容乘以串联。

Example of target output: 目标输出示例:

A = ["A","B","C","D"]
B = ["1","2","3","4"]
C = ["D","E","F","G"]
A[0-N] + B[0-N] + C[0-N]

Giving ["A1D","B1D","C1D","D1D",
        "A2D","B2D","C2D","D2D"
        "A3D","B3D","C3D","D3D"
        "A4D","B4D","C4D","D4D"
        "A1E","B1E","C1E","D1E"

         ... "C4G","D4G"  ]

For this specific example it should yield a list length of 4^3. 对于此特定示例,它的列表长度应为4 ^ 3。 (List length to the power of the number of lists) (列表长度以列表数量的幂为单位)

However list length is not constant so it is really 但是列表长度不是恒定的,因此它确实是

List1 Length * List2 Length * List3 Length * ... * ListN Length

For an inconsistent list length: 对于不一致的列表长度:

  A = ["A","B"]
  B = ["1","2","3","4"]

 = ["A1","A2","A3","A4","B1","B2","B3","B4"]

I have tried python maps and zips, but I am having trouble doing for example: 我已经尝试了python映射和zip,但是例如在执行时遇到了麻烦:

zip(list1, list2, list3)

when: 什么时候:

Amount of lists is not consistent 列表数量不一致

The lists are not stored separately but collated in one large list, 这些列表不是分开存储,而是整理成一个大列表,

and the list size is not consistent 并且列表大小不一致

Methods described on other SO Question only address consistent size, 2 list, situations. 其他SO问题上描述的方法仅解决大小一致的情况,2个列表和情况。 I am having trouble applying these techniques in this situation. 在这种情况下,我无法应用这些技术。

import itertools
A = ["A","B"]
B = ["1","2","3","4"]
list(itertools.product(A, B))

Generic 通用

lists_var = [List1, List2, List3,...ListN]
list(itertools.product(*lists_var))

Use itertools to get the results, and then format as you want: 使用itertools获得结果,然后根据需要设置格式:

import itertools

A = ["A","B","C","D"]
B = ["1","2","3","4"]
C = ["D","E","F","G"]

lists = [A, B, C]

results = [''.join(t) for t initertools.product(*lists)]

print(results)

prints: 打印:

['A1D', 'A1E', 'A1F', 'A1G', 'A2D', 'A2E', 'A2F', 'A2G', 'A3D', 'A3E', 'A3F', 'A3G', 'A4D', 'A4E', 'A4F', 'A4G', 'B1D', 'B1E', 'B1F', 'B1G', 'B2D', 'B2E', 'B2F', 'B2G', 'B3D', 'B3E', 'B3F', 'B3G', 'B4D', 'B4E', 'B4F', 'B4G', 'C1D', 'C1E', 'C1F', 'C1G', 'C2D', 'C2E', 'C2F', 'C2G', 'C3D', 'C3E', 'C3F', 'C3G', 'C4D', 'C4E', 'C4F', 'C4G', 'D1D', 'D1E', 'D1F', 'D1G', 'D2D', 'D2E', 'D2F', 'D2G', 'D3D', 'D3E', 'D3F', 'D3G', 'D4D', 'D4E', 'D4F', 'D4G']

itertools.product Is what you are looking for, I think: 我认为您正在寻找itertools.product

>>> import itertools
>>> A = ["A","B"]
>>> B = ["1","2","3","4"]
>>> C = [A,B]
>>> [''.join(i) for i in itertools.product(*C)]
['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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