如何在python中评估列表中的元组?

如何在python中评估列表中的元组?,python,arrays,list,tuples,Python,Arrays,List,Tuples,我有4个人都在不同的地方。我想这些应该是列表中的元组 People=[(5,0),(4,3),(5,2),(8,3)] 人1在x=5,y=0,如果你认为它是2D网格等, 8点4分有一辆车 我创建了一个代码,通过首先拆分x和y坐标,将它们放入列表中,然后循环此列表来计算每个人的成本,从而计算出汽车最接近的人: for i in range (4): cost=abs((xcar-xpeople[i])+(ycar-people[I]) 不过,这是可行的,我不想先拆分坐标,然后逐个评估列

我有4个人都在不同的地方。我想这些应该是列表中的元组

People=[(5,0),(4,3),(5,2),(8,3)]

人1在x=5,y=0,如果你认为它是2D网格等,

8点4分有一辆车

我创建了一个代码,通过首先拆分x和y坐标,将它们放入列表中,然后循环此列表来计算每个人的成本,从而计算出汽车最接近的人:

for i in range (4):
    cost=abs((xcar-xpeople[i])+(ycar-people[I])
不过,这是可行的,我不想先拆分坐标,然后逐个评估列表中的元组,而是将它们作为一个整体来处理。我该怎么做

我希望这是清楚的!
提前感谢:-

您只需在遍历列表的同时解压元组即可:

for x, y in People:
    cost = abs((xcar - x) + (ycar - y))

您只需在遍历列表的同时解压元组:

for x, y in People:
    cost = abs((xcar - x) + (ycar - y))

可以考虑使用库,它使数组的操作变得简单易行:

>>> import numpy as np
>>> people=np.array([(5,0),(4,3),(5,2),(8,3)])
>>> xcar = np.array((8,4))
>>> abs(people - xcar)
array([[3, 4],
       [4, 1],
       [3, 2],
       [0, 1]])

可以考虑使用库,它使数组的操作变得简单易行:

>>> import numpy as np
>>> people=np.array([(5,0),(4,3),(5,2),(8,3)])
>>> xcar = np.array((8,4))
>>> abs(people - xcar)
array([[3, 4],
       [4, 1],
       [3, 2],
       [0, 1]])

复数是伪装的有序对

people = [5, 4+3j, 5+2j, 8+3j]
car = 8+4j
costs = [abs(car - person) for person in people]

复数是伪装的有序对

people = [5, 4+3j, 5+2j, 8+3j]
car = 8+4j
costs = [abs(car - person) for person in people]

如果您不想导入其他库(如numpy),也不想执行不必要的操作(如power,然后是平方根)来计算距离,则可以使用enumerate在普通Python中执行此操作:


通过这种方式,您还可以获得索引,而不仅仅是值,以防以后在其他操作中需要它。

如果您不想导入其他库(如numpy),也不想执行不必要的操作(如幂和平方根)来计算距离,您可以使用enumerate:


这样,您还可以获得索引,而不仅仅是值,以防以后在其他操作中需要它。

谢谢!它确实有效!但是,我现在想让车接最近的人。这意味着istst的新坐标应该是8,3,这是如何工作的?我只想:closestperson=cost.indexmincost car[0]=x[closestperson]car[1]=y[closestperson],这不起作用,我想应该有一种更简单的方法来做对吗?谢谢!它确实有效!但是,我现在想让车接最近的人。这意味着istst的新坐标应该是8,3,这是如何工作的?我只想:closestperson=cost.indexmincost car[0]=x[closestperson]car[1]=y[closestperson],这不起作用,我想应该有一种更简单的方法来做对吗?注意:这实际上是计算笛卡尔平面上的距离,而OP是x和y方向上距离的总和+阅读OP所说的而不是OP所做的。很有趣!现在,我可以将“最近的”附加到我创建的路线列表中。但是,在运行脚本时,开始位置不再被视为元组。我首先使用route=[car]route=listitertools.chain*route1删除列表中的列表,但现在它也删除了括号。运行脚本时,我得到的答案是:[1,2,,],括号中的最近位置顺序正确。我不太明白。如果是另一个问题,您介意更新您的问题吗?亲爱的@Ni,我不太熟悉主动使用stackoverflow,因此我不知道如何更新,因此我提出了一个新问题:注意:这实际上是计算笛卡尔平面上的距离,而OP计算x和y方向上的距离之和+阅读OP所说的而不是OP所做的。很有趣!现在,我可以将“最近的”附加到我创建的路线列表中。但是,在运行脚本时,开始位置不再被视为元组。我首先使用route=[car]route=listitertools.chain*route1删除列表中的列表,但现在它也删除了括号。运行脚本时,我得到的答案是:[1,2,,],括号中的最近位置顺序正确。我不太明白。如果是另一个问题,您介意更新您的问题吗?亲爱的@Ni,我不熟悉主动使用stackoverflow,因此不知道如何更新,因此我提出了一个新问题: