4

次のようなものを想定します。

if mylist[0] == 1 or mylist[12] == 2:
   # do something

しかし、mylist[12]常に範囲外になるかどうかはわかりません。物事をシンプルに保ち、インデックスが存在するかどうかを確認するにはどうすればよいですか?やりたくない

if mylist[0] == 1:
    # do something
elif mylist[12] == 2:
    # do the EXACT same thing

同一のコード行が多すぎるため。

4

4 に答える 4

10

リストの長さを確認できます。

if mylist[0] == 1 or (len(mylist) > 12 and mylist[12] == 2):

これは、の短い循環動作を使用して、リストの項目が12以下の場合に評価されないようにしますandmylist[12]

于 2012-05-19T20:04:53.850 に答える
4

スライスは常に値を返します (空のリストであっても)。あなたがすることができます:

if myList[0] == 1 or myList[12:13] == [2]:
于 2012-05-19T20:16:03.307 に答える
1

または、次のように読みやすいと思う場合は、次のようにします。

if mylist[0] == 1:
    # do something
elif len(mylist) > 12 and mylist[12] == 2:
    # do same thing
于 2012-05-19T20:07:58.817 に答える
0
def get(arr, ind, default=None):
    try:
        return arr[ind]
    except IndexError:
        return default

if get(myList, 0)==1 or get(myList, 12)==2:
    # do something
于 2012-05-19T21:44:23.593 に答える