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]

我正在为学校做第二份作业,对编程非常陌生。我们只是讨论python中的列表,我遇到了一点麻烦。我们正在使用列表制作一个围棋游戏,我需要将一些字符转换为列表或新字符串。最好是一个字符串,因为我需要将它连接到另一个字符串

我们有一个代表每个玩家的牌的列表,看起来像是
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