首页 > 解决方案 > 用于将 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)

标签: python-3.x

解决方案


您可以有嵌套列表推导:

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)]

推荐阅读