如何计算元素在列表中的位置?
How to count how many positions away an element is in a list?
如果我有一个整数列表,并且我想 return 距离最大数的空格数是从列表的开头算起,如果给定一个列表 list1,我该怎么做?我应该能够 return 整数 '7' 因为 512 是最大值并且相距 7 个空格。
list1=[34,5,1,7,5,3,8,512,8,43]
使用内置函数max
and list.index
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max_ele = max(list1)
>>> print(list1.index(max_ele))
7
这可以在一行中完成,如
print(list1.index(max(list1)))
最简单的方法:
list1.index(max(list1))
另一种方法是使用枚举,这将避免遍历列表两次:
>>> index, element = max(enumerate(list1), key=lambda x: x[1])
>>> index
7
>>> element
512
我更喜欢 避免重复列表两次
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> index, element = max(enumerate(list1), key=lambda x: x[1])
>>> index
7
另一种无需重复列表两次即可高效完成的方法如下:
Python 2:
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max(xrange(len(list1)), key=list1.__getitem__)
7
在 Python 3:
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max(range(len(list1)), key=list1.__getitem__)
7
如果我有一个整数列表,并且我想 return 距离最大数的空格数是从列表的开头算起,如果给定一个列表 list1,我该怎么做?我应该能够 return 整数 '7' 因为 512 是最大值并且相距 7 个空格。
list1=[34,5,1,7,5,3,8,512,8,43]
使用内置函数max
and list.index
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max_ele = max(list1)
>>> print(list1.index(max_ele))
7
这可以在一行中完成,如
print(list1.index(max(list1)))
最简单的方法:
list1.index(max(list1))
另一种方法是使用枚举,这将避免遍历列表两次:
>>> index, element = max(enumerate(list1), key=lambda x: x[1])
>>> index
7
>>> element
512
我更喜欢
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> index, element = max(enumerate(list1), key=lambda x: x[1])
>>> index
7
另一种无需重复列表两次即可高效完成的方法如下:
Python 2:
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max(xrange(len(list1)), key=list1.__getitem__)
7
在 Python 3:
>>> list1=[34,5,1,7,5,3,8,512,8,43]
>>> max(range(len(list1)), key=list1.__getitem__)
7