循环列表中的每个项目
Loop for each item in a list
我有字典:
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
我想创建两者的笛卡尔积,以便获得每个可能对的元组。
output: [(1,10),(1,20),(1,30),
(2,10),(2,20),(2,30),
(3,10),(3,20),(3,30)]
似乎有一种简单的方法可以做到这一点,如果我有三个项目,它就会扩展。有点像循环的动态数量。感觉我缺少一个明显的方法来做到这一点...
itertools.product()
函数将执行此操作:
>>> import itertools
>>> mydict = {'item1':[1,2,3],'item2':[10,20,30]}
>>> list(itertools.product(*mydict.values()))
[(10, 1), (10, 2), (10, 3), (20, 1), (20, 2), (20, 3), (30, 1), (30, 2), (30, 3)]
如果你需要控制结果元组的顺序,你可以这样做
itertools.product(mydict['item1'], mydict['item2'])
你也可以使用两个循环来暴力破解它
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
x = []
for i in mydict['item1']:
for j in mydict['item2']:
x.append((i,j))
这段代码所做的就是遍历 mydict['item1']
中的所有项目,然后遍历 mydict['item2']
中的每个项目,然后将每个项目的一对附加到新列表中。
它会给你这样的结果:
[(1, 10), (1, 20), (1, 30), (2, 10), (2, 20), (2, 30), (3, 10), (3, 20), (3, 30)]
你可以做两个 for 循环。
- 第一个将跟踪第一个项目列表的索引位置。
-第二个循环将遍历第二个中的每个项目。
- 在 运行 遍历所有项目后,第一个 for 循环将递增到其列表中的下一个项目,第二个循环将 运行 再次遍历第二个列表,依此类推。
您可以使用 List Comprehensions:
[(i, j) for i in mydict['item1'] for j in mydict['item2']]
我有字典:
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
我想创建两者的笛卡尔积,以便获得每个可能对的元组。
output: [(1,10),(1,20),(1,30),
(2,10),(2,20),(2,30),
(3,10),(3,20),(3,30)]
似乎有一种简单的方法可以做到这一点,如果我有三个项目,它就会扩展。有点像循环的动态数量。感觉我缺少一个明显的方法来做到这一点...
itertools.product()
函数将执行此操作:
>>> import itertools
>>> mydict = {'item1':[1,2,3],'item2':[10,20,30]}
>>> list(itertools.product(*mydict.values()))
[(10, 1), (10, 2), (10, 3), (20, 1), (20, 2), (20, 3), (30, 1), (30, 2), (30, 3)]
如果你需要控制结果元组的顺序,你可以这样做
itertools.product(mydict['item1'], mydict['item2'])
你也可以使用两个循环来暴力破解它
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
x = []
for i in mydict['item1']:
for j in mydict['item2']:
x.append((i,j))
这段代码所做的就是遍历 mydict['item1']
中的所有项目,然后遍历 mydict['item2']
中的每个项目,然后将每个项目的一对附加到新列表中。
它会给你这样的结果:
[(1, 10), (1, 20), (1, 30), (2, 10), (2, 20), (2, 30), (3, 10), (3, 20), (3, 30)]
你可以做两个 for 循环。 - 第一个将跟踪第一个项目列表的索引位置。 -第二个循环将遍历第二个中的每个项目。 - 在 运行 遍历所有项目后,第一个 for 循环将递增到其列表中的下一个项目,第二个循环将 运行 再次遍历第二个列表,依此类推。
您可以使用 List Comprehensions:
[(i, j) for i in mydict['item1'] for j in mydict['item2']]