Pythonスクリプトを書いていて、他の言語と比べて便利だと思った仕様があったのでメモしておきます。
for a in b:
ではbの中にある要素をaに格納しながらループを行います。このinを次のようにifで使うと別の意味になります。
if a in b:
これはbの中にaという要素があるかどうかを判定して、あればTrueを返すという意味になります。
これを利用するとリスト同士の比較などが楽に行えます。
例えば、objGrp1とobjGrp2の両方にある文字列を調べてlistに書き出したいとき、次のように簡単に書くことができます。
objGrp1=['rice', 'tomato',
'bread', 'banana'];
objGrp2=['meat', 'rice',
'banana', 'apple',
'milk', 'orange'];
list=[];
cnt = 0;
for obj in objGrp1:
if obj in objGrp2:
list.append(obj);
cnt=cnt+1;
print(list);
# Result:
# ['rice', 'banana']
ちなみにMELで書くと、次のようにforループが2回出てくる。
string $objGrp1[]={"rice", "tomato",
"bread", "banana"};
string $objGrp2[]={"meat", "rice",
"banana", "apple",
"milk", "orange"};
string $list[];
int $cnt=0;
for($obj1 in $objGrp1){
for($obj2 in $objGrp2){
if(gmatch($obj2, $obj1){
$list[$cnt]=$obj1;
$cnt++;
}
}
}
print($list);
// Result:
// rice
// banana
C言語などに精通した人間にはMELの構文の方がわかりやすいですが、Pythonのように簡単に書ける方法もわかってしまえば、一人でプログラムを作る分にはとても便利です。
ただし、開発をチームで行う場合、チーム内にPythonに精通していない人がいると、こういった書き方が逆に混乱を招いてしまいます。あえてPythonのような特殊な構文を使わない方がミスがなくなる可能性があるので、そういった場合はよく考えて使うことが必要になります。