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 - ようやくすごしやすい気温に… , そのインデックスに要素が存在するかわからないときの書き方を考える , どこに重点を置くかで文..
私がPythonで嫌いな5つのこと。
listにdictのget相当(範囲外でNoneを得る)がない