0

最近、何かが入っているリストを見つけなければなりませんでした。

def findPoint(haystack, needle): # haystack = [[1,2,3], [4,5]...,[6,7,8,9]]
    for x in range(len(haystack)):
        if needle in haystack[x]:
            return x
    raise Exception("needle: " + str(needle) + " not in haystack")

haystack.index(needle) メソッドがあります。問題は、「これを行うためのより良い方法はありますか?」ということです。

4

2 に答える 2

8

はい、範囲は必要ありません。

for hay in haystack:
  if needle in hay:
    return hay

そして、本当に本当にインデックスが必要な場合は、使用してくださいenumerate

for x, hay in enumerate(haystack):
  if needle in hay:
    return x
于 2012-12-17T12:14:04.777 に答える
0

あなたは1ライナーでこのようなことをすることができます:

def find_point(haystack,needle)
    return next(elem for elem in haystack if needle in elem)

私はうまくいくはずだと思います(しかし、それはhaystack要素を返します)。これによりStopIteration、針が干し草の山の要素のいずれにも含まれていない場合にaが発生します。

実際にインデックスが必要なようには思えませんが、必要な場合は、次を使用してくださいenumerate(Dima Rudnikによる優れた回答によって提案されています)。

def find_point(haystack,needle):
    return next(idx for idx,elem in enumerate(haystack) if needle in elem)
于 2012-12-17T12:31:06.427 に答える