-1

次のコードが機能しないのはなぜですか?

data = [["4","5"],["3","7"]]
search = "4"
for sublist in data:
    if sublist[1] == "4":
        print ("there"), sublist
        break
    else:
        print("not there")
        break

皆様、混乱を招き大変申し訳ございません。リスト全体とそのすべてのサブリストをチェックしようとしましたが、これがリストの 2 番目の要素のみをチェックすることを理解していませんでした。Python には最初の要素の 0 番目の位置があることを忘れていたからです。しかし、リスト全体を確認するにはどうすればよいでしょうか。「ブレーク」と [1] を削除しますか?

4

5 に答える 5

2

Python では、リストは 0 でインデックス付けされているため["4", "5"][1]"5"ではなく"4"です。

また、"4"サブリストまたはサブリストの最初の位置にあるかどうかを確認しますか? 前者の場合は、if search in sublist代わりに使用することをお勧めします。

コメントでNoctuaが述べたように、ここでは最初のサブリストのみをチェックすることに注意してbreakくださいelse.

于 2013-09-29T17:07:16.450 に答える
2

これは、ジェネレータ式any組み込み関数を使用して簡単に実行できます。

data = [["4","5"],["3","7"]]
search = "4"

if any(element == search for sublist in data for element in sublist):
    print ("there")
else:
    print("not there")

または、コメントで@Vedracが指摘しているように、さらに短く:

if any(search in sublist for sublist in data):
    print ("there")
else:
    print("not there")

編集:要素が見つかったサブリストを印刷する場合は、@ thefourtheye の回答に示すように、明示的なループを使用する必要があります。

for sublist in data:
    if search in sublist:
        print("there", sublist)
        break
else:
    print("not there")
于 2013-09-29T17:09:06.393 に答える
0

トーマスが言ったことは、 + いずれにしても壊れているので、メインリストの最初の要素の後、 for ループから抜け出し、それ以上の要素をチェックしていません. 必要なものは次のとおりです。

data = [["4","5"],["3","7"]]
search = "4"
for sublist in data:
    if sublist[0] == "4":
        print "there", sublist
        break
else:
    print "not there"  # executed when the for-loop finishes without break
于 2013-09-29T17:09:23.370 に答える