将列表的某些字符转换为字符串

时间:2013-07-23 21:29:53

标签: python string list

我正在为学校做第二次任务,对编程很新。我们只是在python中覆盖列表,我遇到了一些麻烦。我们正在使用列表进行鱼类游戏,我需要将一些字符转换为列表或新字符串。最好是一个字符串,因为我需要将它连接到另一个字符串。

我们有一个代表每个玩家卡片的列表列表,看起来像pHands[0] = [ac,4c,2h,jd,ad],我需要将其转换为"a 4 2 j a"

def MyCards (pHands,player_number):

    card_list = []
    for i in range(len(pHands[0])):
        card_list = card_list + (pHands[0][i][0])
    return card_list

导致错误无法将str连接到列表,我对join函数不太熟悉。任何帮助将非常感激!!非常感谢你!

5 个答案:

答案 0 :(得分:3)

使用card_list.append(pHands[0][i][0])

只有当双方的元素都是列表时,

+才适用于此上下文。所以你也可以这样做:

card_list = card_list + [pHands[0][i][0]]

然而,这会浪费,因为它(1)分配一个新的临时列表对象,(2)返回一个新的列表对象而不是修改现有的列表对象。

答案 1 :(得分:3)

更好的方法是使用list comprehensions

card_list = [item[0] for item in pHands[0]]

所以,基本上

def MyCards (pHands, player_number):
    return [item[0] for item in pHands[0]]

当然,根据cdhowie的答案来修复你的代码。

答案 2 :(得分:0)

使用列表推导:

>>> pHands = ['ac','4c','2h','jd','ad']
>>> " ".join([i[0] for i in pHands])
'a 4 2 j a'

字符串的join方法只是将iterable的元素(例如list)连接成一个字符串,list comprehension是一种有效且有趣的方法,可以在Python中列出一个列表。

答案 3 :(得分:0)

map将iterable作为第二个参数,并将函数作为第一个应用于每个元素。

字符串函数.join()将iterable作为参数,并使用它所调用的字符串来连接元素。

最后,卡套装达到10,所以所有解决方案建议抓住0指数将突破10,错误地返回1.从第一个到第二个字符的索引解决了这个问题,如“10c”[0: -1] ==“10”。

" ".join( 
  map( lambda i: i[0:-1], ["ac","4c","2h","jd","ad"] )
)

答案 4 :(得分:0)

出现错误是因为您尝试连接列表和非列表。

有很多方法可以做到这一点。

Oneliner:def MyCards (pHands,player_number): return [i[0] for i in pHands[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