2024-09-29 04:25:33 发布
网友
我是Python初学者,脑子不灵光。我该怎么改变 例如a = [[1,2],[3,4],[5,6]] 转换成"12\n34\n56"字符串格式。你知道吗
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
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')来除去它。你知道吗
\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'
这是因为在每个数字之后添加换行符,而不是在每个子列表之后添加换行符。如果您希望这样做,则应在此处添加换行符:
但请注意,附加到字符串是非常低效的,因为它最终会创建许多中间字符串。通常,您会创建一个列表,将字符串部分附加到其中,然后最终加入该列表以将其转换为单个字符串:
然后,您还可以使用列表表达式在多个步骤中将其缩短;首先,对于内部列表:
你可以先加入这个列表:
然后可以将换行符移到外部联接中,并为外部列表创建一个新的列表:
在这一点上,你也可以把它做成一行:
正如Padraic在注释中指出的那样,在换行符上的连接也会防止字符串有一个尾随
\n
,如果您一直将它添加到循环中,它就会结束。否则,您可以在之后使用str.rstrip('\n')
来除去它。你知道吗将^{} 与generator expression一起使用:
相关问题 更多 >
编程相关推荐