Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python列表中的负号交换_Python_List_Numbers_Negative Number - Fatal编程技术网

python列表中的负号交换

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

结果:

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]