首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用以前列表中的所有匹配项创建新的字符串列表?

如何使用以前列表中的所有匹配项创建新的字符串列表?
EN

Stack Overflow用户
提问于 2015-08-19 03:48:19
回答 2查看 45关注 0票数 1

我正在尝试用python制作一个基本的21点游戏,我想创建一个名为Deck的新列表。我希望Deck在一个列表中有所有可能的花色/等级配对(即心形王牌,心形2号,心形3号等),这样我就可以在random.shuffle.pop风格中开始“交易”。

我如何将这两个列表配对,或者我必须自己键入它?

下面是当前的代码:

代码语言:javascript
复制
print ("Welcome to the Blackjack Table! May I have your name?")
user_name = input("Please enter your name:")
print ("Welcome to the table {}. Let's deal!".format(user_name))
import random

suits = ["Heart", "Diamond", "Spade", "Club"]
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
values = {'A':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, '10':10, 'J':10, 'Q':10, 'K':10,}

deck = 
EN

回答 2

Stack Overflow用户

发布于 2015-08-19 03:53:22

使用嵌套的list comprehension将每个等级与每个花色配对。

代码语言:javascript
复制
deck = [(rank, suit) for rank in ranks for suit in suits]

itertools.product可以用来完成同样的事情:

代码语言:javascript
复制
import itertools
deck = list(itertools.product(ranks, suits))
票数 2
EN

Stack Overflow用户

发布于 2015-08-19 03:51:05

所以你要做的就是把每一套衣服和每个等级配对。下面的代码使用两个嵌套的for loops实现了这一点

代码语言:javascript
复制
deck = []  # create an empty list
for suit in suits: 
    for rank in ranks:
        deck.append((suit, rank))  # append a tuple to the list
print len(deck)  # prints 52, as expected

更具pythonic风格的方法是使用list comprehension。它稍微快一点,但可能不那么直观(或更直观)。

代码语言:javascript
复制
deck = [(suit, rank) for suit in suits for rank in ranks]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32081407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档