我想依次遍历三个列表中的每一个,在每次迭代中从每个列表中选择一个元素。
subjects=["Americans","Indians"]
verbs=["plays","watch"]
objects=["Baseball","cricket"]
for i,j,k in zip(subjects,verbs,objects):
print(i,j,k)
上面的代码给出的输出如下:
Americans plays Baseball
Indians watch cricket
但预期的输出是:
Americans play Baseball.
Americans play Cricket.
Americans watch Baseball.
Americans watch Cricket.
Indians play Baseball.
Indians play Cricket.
Indians watch Baseball.
Indians watch Cricket.
答案 0 :(得分:2)
使用itertools.product
获取所有可能的组合,然后打印它们
>>> subjects=["Americans","Indians"]
>>> verbs=["plays","watch"]
>>> objects=["Baseball","cricket"]
>>>
>>> from itertools import product
>>> for x in product(subjects,verbs,objects):
... print('{} {} {}'.format(*x))
...
Americans plays Baseball
Americans plays cricket
Americans watch Baseball
Americans watch cricket
Indians plays Baseball
Indians plays cricket
Indians watch Baseball
Indians watch cricket
答案 1 :(得分:0)
您可以这样迭代解决方案:
subjects=["Americans","Indians"]
verbs=["plays","watch"]
objects=["Baseball","cricket"]
for s in subjects:
for v in verbs:
for o in objects:
print(s,v,o+".")
答案 2 :(得分:0)
itertools.product
是最好的解决方案,但是如果您不想导入模块,那么下一个最有效的解决方案是生成器表达式。
subjects = ["Americans", "Indians"]
verbs = ["play", "watch"]
objects = ["Baseball", "Cricket"]
# paragraph = "\n".join(f"{s} {v} {o}." for s in subjects for v in verbs for o in objects) # Alternative single-liner
for sentence in (f"{s} {v} {o}." for s in subjects for v in verbs for o in objects):
print(sentence)
输出
Americans play Baseball.
Americans play Cricket.
Americans watch Baseball.
Americans watch Cricket.
Indians play Baseball.
Indians play Cricket.
Indians watch Baseball.
Indians watch Cricket.