a='abcdcdc'
list_=[x*3 for x in a]
print list_
これはOKです。 :リストの理解を使用してこれを行うにはどうすればよいですか?
['aaa', 'bbb', 'ccc', 'ddd', 'ccc', 'ddd', 'ccc']
しかし、どのように印刷できますか? :
あなたが使用することができます['abc','cdc','cdc']
a='abcdcdc'
list_=[x*3 for x in a]
print list_
これはOKです。 :リストの理解を使用してこれを行うにはどうすればよいですか?
['aaa', 'bbb', 'ccc', 'ddd', 'ccc', 'ddd', 'ccc']
しかし、どのように印刷できますか? :
あなたが使用することができます['abc','cdc','cdc']
[a[i]+a[i+1]+a[i+2] for i in range(0,len(a)-1,2)]
:
>>> list(range(0,len(a) - 1,2))
[0, 2, 4]
(リストの内包がi
をループとして):
>>> [a[i:i+3] for i in range(0,len(a) - 1,2)]
['abc', 'cdc', 'cdc']
これはi
は、以下の値を取得することを意味します。つまり、range(0,len(a) - 1,2)
は0
で始まり、2
の増分で、最大値に達するまで増加しますが、len(a) - 1
を超えないことを意味します。 Python 3のドキュメントには、読むのに役立つかもしれないrange()
に関する説明があります。
これは、所望のセグメントにa
(a[i:j]
それはi
からa
のj
にスライスを取る手段と表記)をスライスします意味します。最初にスライスa[0:0 + 3]
をとり、次にスライスa[2:2 + 3]
と最後に、探している文字列であるスライスa[4:4 + 3]
を取得します。
私たちは、特に指定のない限り、我々は我々が望む結果で終わるませんa
の長さから1を引いている:ここlist comprehension
を使用して
>>> [a[i:i+3] for i in range(0,len(a),2)]
['abc', 'cdc', 'cdc', 'c']
は、実際にカウンタのPythonの禅にあるかもしれません(「シンプルは複合体より優れている」)。
他のリスト内包表記の回答は正しいものの、なぜ動作するのかを理解するまでには時間がかかります。
一方、次のようなコードでは、まず一目で把握することは難しいことではありません。
a='abcdcdc'
for i in range(0, len(a), 2):
b = a[i:i+3]
if len(b) == 3:
print(b)
生成しようとするものを奇妙なパターン。 –
応答のおかげで私は初心者ですが、このlen(a)がどのように動作しているか教えてください - 1,2 –
@AutomaSha:答えを少し広げました。 –