python-3.x - 用于将 2 个不同列表的 2 个元素彼此相邻附加的列表理解
问题描述
是否可以创建一个列表理解,创建一个列表,其中 2 个不同列表的 2 个元素彼此相邻附加?
For instance, if you have 2 lists:
suits = ["Hearts", "Spades", "Clubs", "Diamonds"]
value_suits = ["Ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King"]
# 1 element at a time for 1 list is possible in a list comprehension:
deck = [value for value in value_suits]
#but can you also do something like this(with correct syntax):
deck = [suit,value for suit,value in suits,value_suits]
#such that you get the same output as:
deck = []
for suit in ["Hearts", "Spades", "Clubs", "Diamonds"]:
for value in ["Ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King"]:
deck.append(str(value)+" "+suit)
解决方案
您可以有嵌套列表推导:
deck = ['{} {}'.format(value, suit) for suit in suits for value in value_suits]
您还可以使用itertools.product
:
from itertools import product
deck = ['{1} {0}'.format(*sv) for sv in product(suits, value_suits)]
推荐阅读
- d - 有没有办法指定要覆盖的功能?
- excel - Powershell -> 在 Excel 中查找/替换 -> 在一个单元格中查找字符串并更改另一个单元格中的字符串
- django - 覆盖 Django 中继承模型的字段选项
- javascript - Vue Composition API - 无法向对象添加属性
- python - 如何使用python计算变量中出现的次数
- sql - 所有名字长度在 6 到 9 个字符之间的学生的姓名和出生日期
- javascript - 无法发布到新路线 Express NodeJs HTML 表单
- c - 参数列表之外的参数的 C 代码类型声明
- blazor - ChildContent RenderFragment 的 Blazor 怪异
- azure - 如何在 Node JS Azure 中使用 Expo 部署 React Native Web 应用程序 - 应用服务