这是我的问题:
我有一个列表列表(相邻),它们是x和y坐标的设置。
我正在尝试创建一个函数,该函数可以弄清楚应该走的路,应该从该列表中返回单个元素。
该返回值将是角色移动的方向。
(例如:adjoining = [[1,0],[3,2],[1,1]]。Return返回x和y的最小坐标,即[1,0]。)< / em>
我的函数应返回x坐标最低的值。如果有多个x坐标的下限值相同,则应选择y坐标最低的坐标。
如何创建一个函数,可以找出哪个x和y值最低?
答案 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]
我将sort
与key
属性一起使用。这使您可以定义对列表进行排序的条件。
其余代码基于列表理解。
[ item for item in a list_of_items if item == wanted_item]
这将根据某些选定条件过滤list_of_item
。只需确保可以if
或True
评估False
之后的内容。