Answers:
嗯 这里有一个关于列表理解的答案,但是它消失了。
这里:
[i for i,x in enumerate(testlist) if x == 1]
例:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
更新:
好的,您需要一个生成器表达式,我们将有一个生成器表达式。再次在for循环中,这是列表理解:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
现在我们将构建一个生成器...
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
令人高兴的是,我们可以将其分配给变量,然后从那里使用它...
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
并且以为我曾经写过FORTRAN。
args = ['x', '-p1', 'v1', '-p2', 'v2']
。然后命令args[[i for i, x in enumerate(args) if x == '-p1'][0] + 1]
返回'v1'
接下来呢?
print testlist.index(element)
如果不确定要查找的元素是否确实在列表中,则可以添加初步检查,例如
if element in testlist:
print testlist.index(element)
要么
print(testlist.index(element) if element in testlist else None)
或“ pythonic方式”,我不太喜欢它,因为代码不太清晰,但有时效率更高,
try:
print testlist.index(element)
except ValueError:
pass
ValueError
for i in xrange(len(testlist)):
if testlist[i] == 1:
print i
xrange而不是要求的范围(请参阅注释)。
xrange
在Python 3.x中不再使用,因为新版本range
已经过时了xrange
如果列表足够大,并且只希望在稀疏索引中找到该值,则可以认为该代码可以更快地执行,因为您不必迭代列表中的每个值。
lookingFor = 1
i = 0
index = 0
try:
while i < len(testlist):
index = testlist.index(lookingFor,i)
i = index + 1
print index
except ValueError: #testlist.index() cannot find lookingFor
pass
如果您希望找到很多值,则应该将“索引”附加到列表中,并在最后打印列表以节省每次迭代的时间。
我认为使用Tkinter库中的curselection()方法可能会很有用:
from Tkinter import *
listbox.curselection()
此方法适用于Tkinter列表框小部件,因此您需要构造其中一个而不是列表。
这将返回如下位置:
(“ 0”,)(尽管Tkinter的更高版本可能会返回一个int列表)
这是第一个位置,编号将根据项目位置而变化。
有关更多信息,请参见以下页面:http : //effbot.org/tkinterbook/listbox.htm
问候。
只是为了说明完整的示例,以及input_list
其中具有searies1
(example:input_list [0])的示例,您要在其中查找series2
(example:input_list [1])并获取series2的索引(如果它在series1中存在)。
注意:certain condition
如果条件简单,您将使用lambda表达式
input_list = [[1,2,3,4,5,6,7],[1,3,7]]
series1 = input_list[0]
series2 = input_list[1]
idx_list = list(map(lambda item: series1.index(item) if item in series1 else None, series2))
print(idx_list)
输出:
[0, 2, 6]