猿问

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

这是我的问题:

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

我正在尝试创建一个可以确定要走哪条路的函数,它应该从该列表中返回一个元素。

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

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

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

如何创建一个函数来确定哪个 x 和 y 值最低?


蛊毒传说
浏览 199回答 3
3回答

Qyouu

只需像这样使用 min() :>>> adjoining = [[3,2],[1,1],[1,0]]>>> min(adjoining)[1, 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 = minsanswer = min[0]我用sort的key属性。这允许您定义对列表进行排序所依据的标准。其余代码基于列表理解。[ item for item in a list_of_items if item == wanted_item]此过滤器list_of_item基于某些选定的标准。只需要确保if可以评估以下内容True或False.

森林海

你可以这样做:minimum = min(adjoining, key=lambda elem: (elem[0], elem[1]))结果:[1, 0]使用该key参数定义将影响排序过程的字段。首先,您将获得基于x值的最小元素,如果有很多元素,它们将根据它们的y值再次排序。另一种方法是使用模块中的itemgetter函数operator:import operatoradjoining = [[1, 0], [3, 2], [1, 1]]minimum = min(adjoining, key=operator.itemgetter(0,1))
随时随地看视频慕课网APP

相关分类

Java
我要回答