为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2021-08-14 15:52:27
这是我的问题:我有一个设置 x 和 y 坐标的列表(相邻)列表。我正在尝试创建一个可以确定要走哪条路的函数,它应该从该列表中返回一个元素。该返回值将是角色移动的方向。(例如:adjoining = [[1, 0], [3, 2], [1, 1]]。返回返回最小的 x 和 y 坐标,即 [1, 0]。)我的函数应该返回具有最低 x 坐标的值。如果有多个 x 坐标具有相同的低值,则应选择 y 坐标最低的那个。如何创建一个函数来确定哪个 x 和 y 值最低?
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

只需像这样使用 min() :


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

>>> min(adjoining)

[1, 0]


查看完整回答
反对 回复 2021-08-14
?
呼如林

TA贡献1798条经验 获得超3个赞

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]

我用sort的key属性。这允许您定义对列表进行排序所依据的标准。其余代码基于列表理解。


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

此过滤器list_of_item基于某些选定的标准。只需要确保if可以评估以下内容True或False.


查看完整回答
反对 回复 2021-08-14
?
森林海

TA贡献2011条经验 获得超2个赞

你可以这样做:


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))


查看完整回答
反对 回复 2021-08-14
  • 3 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信