我想創建以下類型的元組:從陣列創建元組重複元素
('a', 0), ('b', 0), ('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3)
我在這裏結束了一個真正的循環。
我想創建以下類型的元組:從陣列創建元組重複元素
('a', 0), ('b', 0), ('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3)
我在這裏結束了一個真正的循環。
使用itertools.product
。
from itertools import product
tuples = list(product(['a', 'b'], [0, 1, 2, 3]))
print(tuples) # [('a', 0), ('a', 1), ..., ('b', 0), ('b', 1), ...]
如果你需要他們在最初指定的確切順序,則:
tuples = [(let, n) for n, let in product([0, 1, 2, 3], ['a', 'b'])]
如果您的評論說,「我與循環這裏真正的結束」意味着你最終只是想迭代在這些元素上,則:
for n, let in product([0, 1, 2, 3], ['a', 'b']):
tup = (let, n) # possibly unnecessary, depending on what you're doing
''' your code here '''
L = range(0, 4)
K = ['a', 'b']
L3 = [(i, j) for i in K for j in L]
print(L3)
輸出 [('a', 0), ('a', 1), ('a', 2), ('a', 3), ('b', 0), ('b', 1), ('b', 2), ('b', 3)]
如果您想使用列表理解......其他的答案是正確的,以及
你可以選擇itertools.product
讓你要找的笛卡爾乘積對於。如果元素順序是重要的不是,那我們
>>> from itertools import product
>>> list(product(A, range(4)))
[('a', 0),
('a', 1),
('a', 2),
('a', 3),
('b', 0),
('b', 1),
('b', 2),
('b', 3)]
如果你需要特別順序,
>>> list(tuple(reversed(x)) for x in product(range(4), A))
[('a', 0),
('b', 0),
('a', 1),
('b', 1),
('a', 2),
('b', 2),
('a', 3),
('b', 3)]
使用列表理解
>>> [(a,n) for a in list1 for n in range(4)]
[('a', 0), ('a', 1), ('a', 2), ('a', 3), ('b', 0), ('b', 1), ('b', 2), ('b', 3)]
如果爲了事項:
>>> [(a,n) for n in range(4) for a in list1]
[('a', 0), ('b', 0), ('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3)]
'[(a,n)for n in a for a in A]'其中num是範圍(0,3)。 –