from itertools import product
x_coord = ['a','b','c','d','e']
y_coord = ['1', '2', '3', '4', '5']
board = []
index = 0
for item in itertools.product(x_coord, y_coord):
board += item
for elements in board:
board[index] = board[index] + board[index +1]
board.remove(board[index +1])
index += 1
print board
您好。让我解释一下我想用它做什么:
我有两个列表(x_coord
和y_coord
),我希望将它们混合起来:
board = ['a1', 'a2', ..., 'e1', 'e2', ...]
但是我得到IndexError: list index out of range
错误而不是。
我该怎么办?
OBS.:如果我的英文中有任何类型的错误,请告诉我。我正在学习英语和代码。
答案 0 :(得分:2)
你可以这样试试,
>>> x_coord = ['a','b','c','d','e']
>>> y_coord = ['1', '2', '3', '4', '5']
>>> [item + item2 for item2 in y_coord for item in x_coord]
['a1', 'b1', 'c1', 'd1', 'e1', 'a2', 'b2', 'c2', 'd2', 'e2', 'a3', 'b3', 'c3', 'd3', 'e3', 'a4', 'b4', 'c4', 'd4', 'e4', 'a5', 'b5', 'c5', 'd5', 'e5']
排序结果:
>>> sorted([item + item2 for item2 in y_coord for item in x_coord])
['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5', 'c1', 'c2', 'c3', 'c4', 'c5', 'd1', 'd2', 'd3', 'd4', 'd5', 'e1', 'e2', 'e3', 'e4', 'e5']
答案 1 :(得分:0)
t = [a + b for a,b in itertools.product(x_coord,y_coord)]
print t % prints what you want
通常itertools.product(x_coord,y_coord)
会打印以下内容:
[('a','1'),('a','2'),('a','3'),('a','4'),('a','5') ,('b','1'),('b','2'),('b','3'),('b','4'),('b','5') ,('c','1'),('c','2'),('c','3'),('c','4'),('c','5') ,('d','1'),('d','2'),('d','3'),('d','4'),('d','5') ,('e','1'),('e','2'),('e','3'),('e','4'),('e','5') ]
正如您所看到的那样,因为itertools.product
会将a
乘以y_coord
中的每个索引,然后再将x_coord
移动到b
等等。
通过使用list comprehension
,我们可以使用a+b
为输出中的每一对组合两个索引,从而产生以下结果:
['a1','a2','a3','a4','a5','b1','b2','b3','b4','b5','c1','c2',' c3','c4','c5','d1','d2','d3','d4','d5','e1','e2','e3','e4','e5' ]
答案 2 :(得分:0)
combined = map(lambda x: ''.join(x), product(x_coord, y_coord))
答案 3 :(得分:0)
coord = map(lambda x,y: x+y, x_coord, y_coord)
print(coord)
答案 4 :(得分:-1)
x_coord = ['a','b','c','d','e']
y_coord = ['1', '2', '3', '4', '5']
a=[]
for i in range(len(x_coord)):
for j in range(len(y_coord)):
a.append(x_coord[i].join(" "+ y_coord[j]))
b=[]
for item in a:
b.append(item.replace(" ",""))
print b