无法在列表列表的内部列表中执行连接

时间:2013-10-11 11:06:59

标签: python list

我有一个列表列表,其中内部列表的成员是由逗号分隔的单个字符串。我试图定义一个迭代内部列表并执行连接函数的函数。 我有一个列表,例如[['E', 'F', 'J', 'A',], ['S', 'D', 'G', 'K], ['A', 'S', 'R', 'J',], ['H', 'E', 'A', 'N']]

我的目标列表是==> [['EFJA'], ['SDGK'], ['ASRJ'], ['HEAN']] 我使用了以下

def newlist(old_list):
    for i in old_list:
        sep = ('')
        newlist = sep.join(i)
        return newlist

通过运行该函数,我获得了一个字符串,该字符串是仅在列表列表中的第一个内部列表上执行连接的结果,即'EFJA' 但直接使用ide我得到了这个

d = [['E', 'F', 'J', 'A',], ['S', 'D', 'G', 'K'], ['A', 'S', 'R', 'J',], ['H', 'E', 'A', 'N']]
sep = ('')
for i in d:
    new = sep.join(i)
    print(new)

输出

EFJA
SDGK
ASRJ
HEAN

获得所需的输出。我想用我定义的函数获得相同的输出。

1 个答案:

答案 0 :(得分:3)

您应该将所有个人结果放入另一个列表中,然后只有在完成后,返回最终列表:

def newlist(old_list):
    new_list = []
    for i in old_list:
        sep = ''
        new_list.append(sep.join(i))
    return new_list

或者您可以将其缩短为:

def newlist(old_list):
    return [''.join(x) for x in old_list]

由于您似乎希望每个字符串都在其自己的单元素列表中(对我来说没有那么大意义),您可以将连接的结果放在额外的括号中以创建额外的列表。所以在详细函数中,你会这样做:

new_list.append([sep.join(i)])

或者使用具有列表推导的解决方案,您可以

return [[''.join(x)] for x in old_list]