在不影响数值的情况下反转字符串列表

Muk*_*hra -1 python

我有一个字符串列表.

arr = ['17 -> 16 -> 1 -> 8 -> 0', '5 -> 2 -> 3 -> 6 -> 0']
Run Code Online (Sandbox Code Playgroud)

我想要反转字符串,我正在使用此代码:

x = arr[::-1]
x = x.replace(">-", "->")
x = x[5:]
Run Code Online (Sandbox Code Playgroud)

但输出是:

arr = ['0 -> 8 -> 1 -> 61 -> 71', '0 -> 6 -> 3 -> 2 -> 5']
Run Code Online (Sandbox Code Playgroud)

然而,我需要输出为:

arr = ['0 -> 8 -> 1 -> 16 -> 17', '0 -> 6 -> 3 -> 2 -> 5']
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 6

您应该将字符串拆分为箭头字符,反向,然后将它们连接起来.这有效:

[' -> '.join(reversed(a.split(' -> '))) for a in arr]
Run Code Online (Sandbox Code Playgroud)

  • 非常小的实现细节注意:给定`str.join``list`-ifies输入,当它不是`list`或`tuple`时,`reversed`的懒惰特性在这里没有帮助,以及调用它的开销并将结果转换回`list`伤害; `[' - >'.join(a.split(' - >')[:: - 1])对于in arr]`会得到相同的结果,并且(在本地测试中)花费的时间减少约30%运行(至少在我的64位CPython 3.6安装上).无论如何都要投票; 两种版本都是完美的Pythonic. (2认同)