pythonで配列内の要素のインデックスを見つける良い方法はありますか? 配列はソートできないことに注意してください。 使用する比較演算子を指定する方法はありますか?Python:配列内の要素を見つける
答えて
おそらく、リストメソッド.indexを使用することをお勧めします。あなたが必要とする特別な処理を
def __eq__(self, other):
return self.Value == other.Value
:リスト内のオブジェクトの
は、あなたのような何かを行うことができます。
使用することもできます用/列挙(ARR)Dive Into Pythonから値> 100
for index, item in enumerate(arr):
if item > 100:
return index, item
index
メソッドi = array.index(value)
がありますが、カスタム比較演算子を指定することはできません。しかし、独自の関数を書くことは難しくありません。
def custom_index(array, compare_function):
for i, v in enumerate(array):
if compare_function(v):
return i
を持っているアイテムのインデックスを見つけることの
例と文で:
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("example")
5
liのインデックス方法stはあなたのためにこれを行います。注文を保証する場合は、最初にsorted()
を使用してリストをソートします。
a = [5, 4, 3]
print sorted(a).index(5)
または::
a = ['one', 'aardvark', 'a']
print sorted(a, key=len).index('a')
どのようにこの1つはだソートは、ソートがどうなるかを指示するために、CMPやキーパラメータを受け入れますか?
def global_index(lst, test):
return (pair[0] for pair in zip(range(len(lst)), lst) if test(pair[1]))
使用法:
>>> global_index([1, 2, 3, 4, 5, 6], lambda x: x>3)
<generator object <genexpr> at ...>
>>> list(_)
[3, 4, 5]
pythonicを取得します: def global_index(lst、test): return(idxのidx、valは列挙する(lst)if test(val)) – recursive
フィルタ(lambda x:x> 3、[1,2,3,4,5,6]) –
ここでは(一部の人々は、それは議論の余地が見つけるかもしれない)リストの内包表記を使用して、別の方法です。簡単なテストには非常に親しみやすい。 (私は多くのことを必要とする)オブジェクト属性の比較:リストで、適切な要素の、これが存在することを前提としてもちろん
el = [x for x in mylist if x.attr == "foo"][0]
(実際には、および、独自性)。
'el = [x.attr ==" foo "の場合はxをmylistにする] ' if el :el [0]で何かをしなさい は "存在"の問題を解決します – berkus
あなたがnumpyの配列の値を検索すると仮定すると、 は、私はこのような何かがうまくいくかもしれないと思う:
Numpy.where(arr=="value")[0]
あなただけの要素がリストかどうかに含まれているかどうかを確認したい場合は:
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> 'example' in li
True
>>> 'damn' in li
False
答えは最高です! =) – holms
私はこれをいくつかのtutosを適応させることによって見つけました。、そしてあなたのすべてにをGoogleに感謝;)
def findall(L, test):
i=0
indices = []
while(True):
try:
# next value in list passing the test
nextvalue = filter(test, L[i:])[0]
# add index of this value in the index list,
# by searching the value in L[i:]
indices.append(L.index(nextvalue, i))
# iterate i, that is the next index from where to search
i=indices[-1]+1
#when there is no further "good value", filter returns [],
# hence there is an out of range exeption
except IndexError:
return indices
A非常に簡単な使用:
a = [0,0,2,1]
ind = findall(a, lambda x:x>0))
[2, 3]
P.S.私は一致する要素(Pythonの2.6)のインデックスを返す関数を使用して私の英語
をscuse:
def index(l, f):
return next((i for i in xrange(len(l)) if f(l[i])), None)
そして、例えば任意の必要な式で必要な要素を取得するためのラムダ関数を経由して、それを使用要素名を使用します。
element = mylist[index(mylist, lambda item: item["name"] == "my name")]
私のコードのいくつかの場所でそれを使用する必要がある場合、私はちょうど特定のfind関数を定義します。名前で要素を見つけるために:
def find_name(l, name):
return l[index(l, lambda item: item["name"] == name)]
をし、それは非常に簡単で読みやすいです:
element = find_name(mylist,"my name")
- 1. 配列内の配列要素のインデックスを見つける
- 2. ハッシュ内の配列内の要素を見つける
- 3. PHP配列内の要素内のランダムな要素を見つける?
- 4. 配列内の最小要素の位置を見つける
- 5. Mongo:Idの配列内の要素(id)を見つける
- 6. Matlab:配列内の複数の要素を見つける
- 7. 配列内の次の大きい要素を見つける
- 8. 配列内の要素のインデックスを見つける - Haskell
- 9. php Laravel - 配列内の要素を見つける
- 10. 配列内の要素を見つける方法
- 11. 配列内の最小要素を見つける再帰アルゴリズム
- 12. ソートされた配列内で素早く要素を見つける
- 13. 2つの配列内で類似した要素を見つける
- 14. リスト内の要素を見つける
- 15. Jquery:DIV内の要素を見つける
- 16. linqを使って配列内の連続する要素を見つける
- 17. 2D配列内の要素セットのすべての行インデックスを見つける
- 18. 配列リストの重複する要素を見つける
- 19. フォーマット指定子で配列内の特定の要素を見つける
- 20. javacriptの配列の中間要素を見つける
- 21. 2Dベクトル配列の右上の要素を見つける
- 22. 2次元配列の要素の座標を見つける
- 23. 配列の要素の違いを見つけるには?
- 24. 再帰的にjavascript配列内の子要素を見つける
- 25. 配列内のマスター要素を見つける効率的なアルゴリズム?
- 26. Bash:配列内の反復されていない要素を見つける
- 27. javascriptの2つの配列に欠けている要素を見つける
- 28. 循環ソート配列の最小要素を見つける
- 29. Javaで要素位置の配列を見つける
- 30. ハッシュ配列の要素を見つける
ありがとう、これは私が探していたまさにでしたし、それは完全に働きました! –
しかし、このコードは、要素がリストにないときにエラーを返します。現在のコンテキストでは、 'three'を検索すると、li.index( 'three'))エラーが発生します。 –
エラーを検出して、何かがリストにないときに検出することができます。 'try:li.index(" three ")を除いてValueError:found = falseを返します。 –