Python 将列表中的某些字符转换为字符串
我正在为学校做第二份作业,对编程非常陌生。我们只是讨论python中的列表,我遇到了一点麻烦。我们正在使用列表制作一个围棋游戏,我需要将一些字符转换为列表或新字符串。最好是一个字符串,因为我需要将它连接到另一个字符串 我们有一个代表每个玩家的牌的列表,看起来像是Python 将列表中的某些字符转换为字符串,python,string,list,Python,String,List,我正在为学校做第二份作业,对编程非常陌生。我们只是讨论python中的列表,我遇到了一点麻烦。我们正在使用列表制作一个围棋游戏,我需要将一些字符转换为列表或新字符串。最好是一个字符串,因为我需要将它连接到另一个字符串 我们有一个代表每个玩家的牌的列表,看起来像是pHands[0]=[ac,4c,2h,jd,ad],我需要将它转换成“A4 2 j a” 这会导致无法将str连接到list的错误,而且我对join函数不太熟悉。任何帮助都将不胜感激!!非常感谢你 使用卡片列表。追加(pHands[0]
pHands[0]=[ac,4c,2h,jd,ad]
,我需要将它转换成“A4 2 j a”
这会导致无法将str连接到list的错误,而且我对join函数不太熟悉。任何帮助都将不胜感激!!非常感谢你 使用卡片列表。追加(pHands[0][i][0])
+
仅当两侧的元素都是列表时,才适用于此上下文。所以你也可以做:
card_list = card_list + [pHands[0][i][0]]
但是,这将是浪费,因为它(1)分配一个新的临时列表对象,(2)返回一个新的列表对象,而不是修改现有的列表对象。更好的方法是使用 所以,基本上
def MyCards (pHands, player_number):
return [item[0] for item in pHands[0]]
当然,要按照cdhowie的答案修复代码。使用列表理解:
>>> pHands = ['ac','4c','2h','jd','ad']
>>> " ".join([i[0] for i in pHands])
'a 4 2 j a'
字符串的连接方法简单地将iterable元素(如list)连接到字符串中,列表理解是Python中对列表进行连接的一种有效而有趣的方法。map将iterable作为第二个参数,将应用于每个元素的函数作为第一个参数 string函数.join()将iterable作为参数,并使用调用它的字符串连接元素 最后,卡片套装会增加到10,因此所有建议获取0索引的解决方案都会在10上中断,错误地返回1。从第一个字符到最后第二个字符的索引可以解决这个问题,如“10c”[0:-1]=“10”
出现错误的原因是您试图连接列表和非列表 有很多方法可以做到这一点 Oneliner:
def MyCards(pHands,player_number):为pHands中的i返回[i[0]]
如果要编辑自己的代码:
def MyCards (pHands,player_number):
card_list = []
for i in range(len(pHands[0])):
card_list.append(pHands[0][i][0])
# remeber don't use concatenation here. i.e. card_list = card_list + [pHands[0][i][0]]
# because it creates a new list and assign it to card_list and that is bad for space.
return card_list
或者你可以这样做。:)这太完美了!非常感谢你。对于初学者友好的答案,一定要将你认为最有用的答案标记为+1,而不是在这个阶段可能会混淆OP的列表理解。事实上,我同意@blablatros-第二个作业,列表理解o-ODo,你需要将其转换为列表
['a',4,2,j','a']
或字符串“a 4 2 j a”
?
>>> pHands = ['ac','4c','2h','jd','ad']
>>> " ".join([i[0] for i in pHands])
'a 4 2 j a'
" ".join(
map( lambda i: i[0:-1], ["ac","4c","2h","jd","ad"] )
)
def MyCards (pHands,player_number):
card_list = []
for i in range(len(pHands[0])):
card_list.append(pHands[0][i][0])
# remeber don't use concatenation here. i.e. card_list = card_list + [pHands[0][i][0]]
# because it creates a new list and assign it to card_list and that is bad for space.
return card_list