找出列表中的多个值是否相同

时间:2018-11-10 17:26:37

标签: python python-3.x

这是我的问题:

我有一个列表列表(相邻),它们是x和y坐标的设置。

我正在尝试创建一个函数,该函数可以弄清楚应该走的路,应该从该列表中返回单个元素。

该返回值将是角色移动的方向。

(例如:adjoining = [[1,0],[3,2],[1,1]]。Return返回x和y的最小坐标,即[1,0]。)< / em>

我的函数应返回x坐标最低的值。如果有多个x坐标的下限值相同,则应选择y坐标最低的坐标。

如何创建一个函数,可以找出哪个x和y值最低?

3 个答案:

答案 0 :(得分:0)

您可以这样做:

minimum = min(adjoining, key=lambda elem: (elem[0], elem[1]))

结果:

[1, 0]

使用key参数定义将影响排序过程的字段。首先,您将基于x值获得最小元素,如果有很多元素,它们将根据其y值再次排序。

另一种方法是使用itemgetter模块中的operator函数:

import operator

adjoining = [[1, 0], [3, 2], [1, 1]]

minimum = min(adjoining, key=operator.itemgetter(0,1))

答案 1 :(得分:0)

只需像这样使用min():

>>> adjoining = [[3,2],[1,1],[1,0]]
>>> min(adjoining)
[1, 0]

答案 2 :(得分:0)

adjoining.sort(key= lambda x:x[0])
mins = [i for i in adjoining if i[0] == adjoining[0][0]]
if len(mins)>1:
   mins.sort(key= lambda x:x[1])
   min = [i for i in mins if i[1] == mins[0][1]]
else:
   min = mins
answer = min[0]

我将sortkey属性一起使用。这使您可以定义对列表进行排序的条件。 其余代码基于列表理解。

[ item for item in a list_of_items if item == wanted_item]

这将根据某些选定条件过滤list_of_item。只需确保可以ifTrue评估False之后的内容。