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

2024-04-23 21:54:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

输入示例:

['-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 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']

Tags: 方法字符串示例列表整数
3条回答

使用简单的列表理解

>>> 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']

一个稍微不同的方法,那么什么已经张贴到目前为止

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']

这就是你想要的。希望变量和函数名能相对清楚地说明发生了什么。你知道吗

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 ]

(注意:“invert”实际上是一个潜在的误导词——在数学中,当使用非限定词时,最常见的解释是do1/x,而不是-x;在计算中,它可能意味着许多不同事物中的任何一个,包括颠倒序列的顺序)。你知道吗

相关问题 更多 >