【Python】 文字列を2文字ずつ処理する
s= "abcdefgh" for i in s[::2]: if i != s[-1]: print i+s[s.index(i)+1]
実行結果
ab cd ef gh
追記)
よくよく考えてみたら s="abaacd"みたいな感じで重複文字あったらindex()だとうまくいきません。なんとなくrange(len())としたくなかったのですが、その場合は下の方法でなきゃだめですね。
ほんとは if文を挟まずにすむ方法を探してました。
以下、迷走の記録
1 素直に考える
最初に思いついたのがこれです。
for i in range(0,len(s),2): if i != len(s)-1: print s[i]+s[i+1]
2 generatorを使う
なんか大げさな気もします。
def gen(): for i,j in zip(s[::2],s[1::2]): x,y=i,j yield x+y for i in gen(): print i
3 itertoolsを使う
使い方よく分からないです。
import itertools a,b = itertools.tee(s) next(b) n = 0 for i in zip(a,b): if n % 2 == 0: x, y = i print x+y n += 1