python列表中的负号交换
我有一个列表,我想交换列表中x和y元素的负符号,如果x不是负的,它应该变成负的,如果y是负的,它应该变成正的(只需要改变符号) 应该是这样的:python列表中的负号交换,python,list,numbers,negative-number,Python,List,Numbers,Negative Number,我有一个列表,我想交换列表中x和y元素的负符号,如果x不是负的,它应该变成负的,如果y是负的,它应该变成正的(只需要改变符号) 应该是这样的: x = [[-123 456],[567 -8910],[432 -890], [-567 976]] 我还想提取一个单独列表中的所有x元素(例如:u=[-123,-567,-432,-567])和一个单独列表中的y元素(例如:v=[4568910980976])。请提出可能的解决办法 我面临的问题是元素之间没有逗号如果您能够使用numpy,这非常简单
x = [[-123 456],[567 -8910],[432 -890], [-567 976]]
我还想提取一个单独列表中的所有x元素(例如:u=[-123,-567,-432,-567])和一个单独列表中的y元素(例如:v=[4568910980976])。请提出可能的解决办法
我面临的问题是元素之间没有逗号如果您能够使用numpy,这非常简单:
x = [[-123 456],[-567 8910],[-432 890], [-567 976]]
结果:
import numpy as np
x = np.array([[-123, 456],[567, -8910],[432, -890], [-567, 976]])
out = np.abs(x) * [-1, 1]
print(out)
要拆分为单独的阵列,只需使用阵列切片:
> [[-123 456]
[-567 8910]
[-432 890]
[-567 976]]
基本上你希望所有的
x
都是负数,所有y
都是正数<代码>abs在这里非常有用。不需要检查是否为阴性
xArr = out[:,0]
yArr = out[:,1]
得到列表中所有的x和y是另一个简单的理解,只需排除你不想要的值
data = [[-123, 456], [567, -8910], [432, -890], [-567, 976]]
output = [[-abs(x), abs(y)] for x, y in data]
-number
将翻转数字的符号。您能自己演示一下解决这个问题的方法吗?您可以使用嵌套列表理解来完成。欢迎使用堆栈溢出!StackOverflow不是免费的编码服务。你应该会的。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,并以:)为例。我希望以上提示将为您指明正确的方向。如果内部元素之间没有逗号,则是语法错误。如果内部列表的元素之间和外部列表的元素之间没有逗号,则无法创建列表列表。是用户提供的文本输入还是什么?最后一个列表的输出不正确。根据OP,它应该是[-567976]。我认为这一定是OP示例中的输入错误,因为这似乎不符合他的要求。主要问题是元素之间没有逗号,这就是为什么每次我都会出错的原因,示例是正确的,我们只需要将否定符号从第二个元素移到第一个元素OK,我已经更新了我的答案以匹配。如果不使用numpy,为什么要使用numpy?我想这是一个坏习惯abs()
总是返回正数<代码>-abs(x)当x
是-123
时,它将是-123
。“你没有翻动标志。”巴尔马说得对。他们不希望它在那种情况下翻转。我明白了,我不明白x和y的规则是不同的。我以为他们只是想把一切都翻过来。
all_x = [x for x, y in data]
all_y = [y for x, y in data]
import numpy as np
data = np.array([[-123, 456],[567, -8910],[432, -890], [-567, 976]])
# Negative-Number
for i in range(data.shape[0]):
if(data[i][0]>0):
data[i][0] = data[i][0]*-1
if(data[i][1]<0):
data[i][1] = data[i][1]*-1
# Store results
all_x = [x for x, y in data]
all_y = [y for x, y in data]
print("Output:\n",data)
print("all_x:\n",all_x)
print("all_y:\n",all_y)
Output:
[[-123 456]
[-567 8910]
[-432 890]
[-567 976]]
all_x:
[-123, -567, -432, -567]
all_y:
[456, 8910, 890, 976]