将列表转换为字符串列表

2024-09-29 04:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python初学者,脑子不灵光。我该怎么改变 例如a = [[1,2],[3,4],[5,6]] 转换成"12\n34\n56"字符串格式。你知道吗

这是我所能得到的,但每一个数字都是新的。你知道吗

def change(a):
    c = ""
    for r in a:
        for b in r:
            c += str(b) + "\n"
    return c

Tags: 字符串inforreturndef格式数字change
2条回答

but it goes into newline with each number

这是因为在每个数字之后添加换行符,而不是在每个子列表之后添加换行符。如果您希望这样做,则应在此处添加换行符:

c = ''
for r in a:
    for b in r:
        c += str(b)
    c += '\n'
return c

但请注意,附加到字符串是非常低效的,因为它最终会创建许多中间字符串。通常,您会创建一个列表,将字符串部分附加到其中,然后最终加入该列表以将其转换为单个字符串:

c = []
for r in a:
    for b in r:
        c.append(str(b))
    c.append('\n')
return ''.join(c)

然后,您还可以使用列表表达式在多个步骤中将其缩短;首先,对于内部列表:

c = []
for r in a:
    c.extend([str(b) for b in r])
    c.append('\n')
return ''.join(c)

你可以先加入这个列表:

c = []
for r in a:
    c.append(''.join([str(b) for b in r]))
    c.append('\n')
return ''.join(c)

然后可以将换行符移到外部联接中,并为外部列表创建一个新的列表:

c = [''.join([str(b) for b in r]) for r in a]
return '\n'.join(c)

在这一点上,你也可以把它做成一行:

return '\n'.join([''.join([str(b) for b in r]) for r in a])

正如Padraic在注释中指出的那样,在换行符上的连接也会防止字符串有一个尾随\n,如果您一直将它添加到循环中,它就会结束。否则,您可以在之后使用str.rstrip('\n')来除去它。你知道吗

^{}generator expression一起使用:

>>> a = [[1,2], [3,4], [5,6]]
>>> '\n'.join(''.join(map(str, xs)) for xs in a)
'12\n34\n56'

相关问题 更多 >