Python在字符串列表中反转数字

时间:2015-12-22 21:11:51

标签: python python-2.7

使用python反转(即乘以-1)列表中字符串中整数的最有效方法是什么?

示例输入:

savedString=$(sed '1,/'"$stringCompared"'/d' /folder/fileB.txt)
< p>期望的输出:

['-1 -2 -3 -4 -5 -6 -7 -8 9 -10 11',' -17 18 19 20 -21 22 -23 ',' -36 -37 -38 39 40 41 42 -43 44 ']

3 个答案:

答案 0 :(得分:4)

使用简单的列表推导

>>> lst = ['-1 -2 -3 -4 -5 -6 -7 -8 9 -10 11',' -17 18 19 20 -21 22 -23 ',' -36 -37 -38 39 40 41 42 -43 44 ']
>>> [' '.join(map(lambda x: str(-int(x)), s.split())) for s in lst]
['1 2 3 4 5 6 7 8 -9 10 -11', '17 -18 -19 -20 21 -22 23', '36 37 38 -39 -40 -41 -42 43 -44']

答案 1 :(得分:2)

这就是你想要的。希望变量和函数名称能够比较清楚地发生了什么。

list_of_strings = ['-1 -2 -3 -4 -5 -6 -7 -8 9 -10 11',' -17 18 19 20 -21 22 -23 ',' -36 -37 -38 39 40 41 42 -43 44 ']

def process(string_of_ints):
    return ' '.join( str(-int(each_word)) for each_word in string_of_ints.split() )

result = [ process(each_string) for each_string in list_of_strings ]
print(result)

它可以以一些清晰度为代价折叠成一行:

result = [ ' '.join( str(-int(each_word)) for each_word in each_string.split() ) for each_string in list_of_strings ]

(注意:“反转”实际上是一个潜在的误导性词 - 在数学中,当使用不合格时,最常见的解释意味着做1 / x,而不是-x;在计算中它可能意味着许多不同的东西中的任何一个,包括颠倒序列的顺序)。

答案 2 :(得分:1)

与目前发布的内容略有不同

l=['-1 -2 -3 -4 -5 -6 -7 -8 9 -10 11',' -17 18 19 20 -21 22 -23 ',' -36 -37 -38 39 40 41 42 -43 44 ']

for i in xrange(len(l)):
    tmp=[]
    for s in l[i].split():
        tmp.append(str(-int(s)))
    l[i]=' '.join(tmp)
print l

['1 2 3 4 5 6 7 8 -9 10 -11', '17 -18 -19 -20 21 -22 23', '36 37 38 -39 -40 -41 -42 43 -44']