a='abcdcdc'
list_=[x*3 for x in a]
print list_
这是打印这个OK !!!! :
['aaa', 'bbb', 'ccc', 'ddd', 'ccc', 'ddd', 'ccc']
但我怎么打印这个? :
['abc','cdc','cdc']
答案 0 :(得分:4)
您可以使用:
>>> [a[i:i+3] for i in range(0,len(a) - 1,2)]
['abc', 'cdc', 'cdc']
这意味着i
将获得以下值:
>>> list(range(0,len(a) - 1,2))
[0, 2, 4]
(因为列表理解遍历i
)。这意味着range(0,len(a) - 1,2)
从0
开始,以2
为增量,它会增加,直到达到最高值但不超过len(a) - 1
。 Python 3文档中有关于range()
的更长解释,这有助于阅读。
这意味着它会将a
切片到所需的片段中(符号a[i:j]
表示它会从i
到j
获取片段a
)。它首先会获取切片a[0:0 + 3]
,然后是切片a[2:2 + 3]
,最后是切片a[4:4 + 3]
,它们是您正在寻找的字符串。
我们从a
的长度中减去1,否则我们不会得到我们想要的结果:
>>> [a[i:i+3] for i in range(0,len(a),2)]
['abc', 'cdc', 'cdc', 'c']
答案 1 :(得分:0)
[a[i]+a[i+1]+a[i+2] for i in range(0,len(a)-1,2)]
答案 2 :(得分:0)
在这里使用list comprehension
实际上可能与Python的 zen相反(“简单比复杂更好”)。
虽然其他列表理解答案是正确的,但需要一段时间才能理解它们的工作原理。
另一方面,乍一看下面的代码并不难理解:
a='abcdcdc'
for i in range(0, len(a), 2):
b = a[i:i+3]
if len(b) == 3:
print(b)