作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 for 循环迭代和连接单词以创建多个排列。我的 for 循环可以工作,但我不想使用 for 循环,因为我希望将代码放在一行上,这样我就可以创建一个变量。
我有什么选择?我意识到的基本问题。
这是我想要连接的两个列表:
first = ["Happy", "Sad", "Fun"]
second = ["Game", "Movie"]
期望的输出:
combo = ["Happy Game", "Happy Movie", "Sad Game", "Sad Movie", "Fun Game", "Fun Movie"]
这个 for 循环可以工作,但我希望它在一行上并作为一个变量:
for b in first:
for s in second:
combo = b + ' ' + s
print(combo)
有没有办法不用 for 循环来做到这一点?
最佳答案
您可以使用 itertools.product()
、map()
和 str.join
来实现此结果,而无需使用 for
循环(甚至不在列表理解中)为:
>>> from itertools import product
>>> first = ["Happy", "Sad", "Fun"]
>>> second = ["Game", "Movie"]
>>> map(' '.join, product(first, second))
['Happy Game', 'Happy Movie', 'Sad Game', 'Sad Movie', 'Fun Game', 'Fun Movie']
此处itertools.product()
返回可迭代对象的笛卡尔积。
请参阅以下文档了解更多详细信息:
关于python - 连接两个列表的笛卡尔积的字符串(最好没有 for 循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65484461/
我是一名优秀的程序员,十分优秀!