Python 如果列表中字符串的最后一个字符是"-&引用;将其移动到字符串的开头

Python 如果列表中字符串的最后一个字符是"-&引用;将其移动到字符串的开头,python,string,list,split,Python,String,List,Split,我已拆分一个字符串以生成以下内容: Transaction = ['03/29/18', '16,545,275.32-', '8,309,931.13-', '24,855,206.45-', '2.18', '1,505.11'] 如何检查列表中的每个字符串以确定其是否以“-”结尾,以及是否将其移动到字符串的前面?输出应类似于: Transaction = ['03/29/18', '-16,545,275.32', '-8,309,931.13', '-24,855,206.45', '

我已拆分一个字符串以生成以下内容:

Transaction = ['03/29/18', '16,545,275.32-', '8,309,931.13-', '24,855,206.45-', '2.18', '1,505.11']
如何检查列表中的每个字符串以确定其是否以“-”结尾,以及是否将其移动到字符串的前面?输出应类似于:

Transaction = ['03/29/18', '-16,545,275.32', '-8,309,931.13', '-24,855,206.45', '2.18', '1,505.11']

下面是一行列表理解:

>>> Transaction = ['03/29/18', '16,545,275.32-', '8,309,931.13-', '24,855,206.45-', '2.18', '1,505.11']

>>> ['-' + i[:-1] if i[-1] is '-' else i for i in Transaction]
['03/29/18', '-16,545,275.32', '-8,309,931.13', '-24,855,206.45', '2.18', '1,505.11']
说明:

这里的
i
是迭代器,它迭代列表
事务中的每个元素

i[-1]
-获取字符串的最后一个字符(适用于非空字符串)

i[:-1]
-从起始元素到最后一个字符的字符串切片(不包括最后一个字符)

python计算表达式
i[-1]的速度比
i.endswith('-')快。


endswith
[:-1]
。。。。类似于:
['-'+t[:-1]如果t.endswith('-')在事务中表示t,则表示t的值]
。非常好,这完全符合我的需要。谢谢你的帮助。
In [2]: %timeit ['-' + i[:-1] if i[-1] is '-' else i for i in Transaction]
950 ns ± 7.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [3]: %timeit ['-' + i[:-1] if i.endswith('-') else i for i in Transaction]
1.52 µs ± 10.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [4]: %timeit ['-' + i[:-1] if i[-1] == '-' else i for i in Transaction]
1.1 µs ± 4.79 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)