回答:
うーん。ここにリスト内包の答えがありましたが、消えました。
ここに:
[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のにdepractedれるrange
古いですxrange
[x for x in range(len(testlist)) if testlist[x]==1]
以下を試してください:
testlist = [1,2,3,5,3,1,2,1,6]
position=0
for i in testlist:
if i == 1:
print(position)
position=position+1
リストが十分に大きくなり、インデックスの数が少ない場合にのみ値が見つかると予想した場合は、リスト内のすべての値を反復する必要がないため、このコードははるかに速く実行できると考えてください。
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リストボックスウィジェットで機能するため、リストではなくウィジェットの1つを作成する必要があります。
これは次のような位置を返します:
( '0'、)(ただしTkinterの新しいバージョンでは、代わりにintのリストが返される場合があります)
どちらが最初の位置であり、番号はアイテムの位置に応じて変化します。
詳細については、次のページを参照してください。http: //effbot.org/tkinterbook/listbox.htm
こんにちは。
完全な例を説明するために、次input_list
を持っているsearies1
(例:input_list [0])で、ルックアップを行います。series2
(例:input_list [1])と、それはシリーズ1に存在する場合はシリーズ2のインデックスを取得します。
注:certain condition
条件が単純な場合、ラムダ式になります
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]