alw*_*btc 10 python loops for-loop list
我想使用包含任意数量元素的3(或任意数量)列表迭代for循环,例如:
from itertools import izip
for x in izip(["AAA", "BBB", "CCC"], ["M", "Q", "S", "K", "B"], ["00:00", "01:00", "02:00", "03:00"]):
print x
Run Code Online (Sandbox Code Playgroud)
但它给了我:
('AAA', 'M', '00:00')
('BBB', 'Q', '01:00')
('CCC', 'S', '02:00')
Run Code Online (Sandbox Code Playgroud)
我想要:
('AAA', 'M', '00:00')
('AAA', 'M', '01:00')
('AAA', 'M', '02:00')
.
.
('CCC', 'B', '03:00')
Run Code Online (Sandbox Code Playgroud)
其实我想要这个:
for word, letter, hours in [cartesian product of 3 lists above]
if myfunction(word,letter,hours):
var_word_letter_hours += 1
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 18
您想使用列表的产品:
from itertools import product
for word, letter, hours in product(["AAA", "BBB", "CCC"], ["M", "Q", "S", "K", "B"], ["00:00", "01:00", "02:00", "03:00"]):
Run Code Online (Sandbox Code Playgroud)
演示:
>>> from itertools import product
>>> for word, letter, hours in product(["AAA", "BBB", "CCC"], ["M", "Q", "S", "K", "B"], ["00:00", "01:00", "02:00", "03:00"]):
... print word, letter, hours
...
AAA M 00:00
AAA M 01:00
AAA M 02:00
AAA M 03:00
...
CCC B 00:00
CCC B 01:00
CCC B 02:00
CCC B 03:00
Run Code Online (Sandbox Code Playgroud)
用途itertools.product:
import itertools
for x in itertools.product(["AAA", "BBB", "CCC"],
["M", "Q", "S", "K", "B"],
["00:00", "01:00", "02:00", "03:00"]):
print x
Run Code Online (Sandbox Code Playgroud)
输出:
('AAA', 'M', '00:00')
('AAA', 'M', '01:00')
...
('CCC', 'B', '02:00')
('CCC', 'B', '03:00')
Run Code Online (Sandbox Code Playgroud)