12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonで配列のn番目の要素が存在するかチェックする

Posted at

Perlスクリプトからpythonへ移植しているところでちょっとつまずいたのでメモメモ。

array.pl
use strict;
use warnings;

my @ary;
@ary = (11,0,33); # 二番目の要素は存在するよ 0
#@ary = (11);     # 二番目の要素は存在しないよ

if(defined $ary[1]) {
  print("二番目の要素は存在するよ $ary[1]\n");
}
else {
  print("二番目の要素は存在しないよ\n");
}

やりたいことはn番目の要素があるかどうかだけチェックしたい。

array.py
ary = [11, 0, 33] # 2番目の要素は存在するよ 0
#ary = [11]       # 2番目の要素は存在しないよ
if len(ary) > 1:
    print("2番目の要素は存在するよ {}".format(ary[1]))
else:
    print("2番目の要素は存在しないよ")

これで間違いではないのだけれど、長さを取るというよりは”n番目があるか知りたい”のでダイレクトアクセスしてみる

ary = [11, 0, 33] # 2番目の要素は存在しないよ
#ary = [11]       # IndexError: list index out of range

if ary[1]:
    print("2番目の要素は存在するよ {}".format(ary[1]))
else:
    print("2番目の要素は存在しないよ")

if文で0がFalseと判定された上、要素がない場合は例外となってしまった。

jijixi's diary - ようやくすごしやすい気温に… , そのインデックスに要素が存在するかわからないときの書き方を考える , どこに重点を置くかで文..

配列のスライスを使えばいいそうな。

array2.py
ary = [11, 0, 33] # 2番目の要素は存在するよ 0
#ary = [11]       # 2番目の要素は存在しないよ

if ary[1:2]:
    print("2番目の要素は存在するよ {}".format(ary[1]))
else:
    print("2番目の要素は存在しないよ")

exists()メソッドとか無いのかしら。

参考

jijixi's diary - ようやくすごしやすい気温に… , そのインデックスに要素が存在するかわからないときの書き方を考える , どこに重点を置くかで文..

Matzにっき(2007-07-19)

私がPythonで嫌いな5つのこと。
listにdictのget相当(範囲外でNoneを得る)がない

[Python] listが空かどうか判定する方法2つ - Qiita

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?