使用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 ']
答案 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']