Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表理解来完成此操作?_Python_Python 2.7 - Fatal编程技术网

Python 如何使用列表理解来完成此操作?

Python 如何使用列表理解来完成此操作?,python,python-2.7,Python,Python 2.7,这是打印这个OK!!!!: a='abcdcdc' list_=[x*3 for x in a] print list_ 但是我怎样才能打印这个呢 ['aaa', 'bbb', 'ccc', 'ddd', 'ccc', 'ddd', 'ccc'] 您可以使用: [a[i]+a[i+1]+a[i+2] for i in range(0,len(a)-1,2)] 这意味着i将获得以下值: >>> [a[i:i+3] for i in range(0,len(a) - 1,2)

这是打印这个OK!!!!:

a='abcdcdc'
list_=[x*3 for x in a]
print list_
但是我怎样才能打印这个呢

['aaa', 'bbb', 'ccc', 'ddd', 'ccc', 'ddd', 'ccc']
您可以使用:

[a[i]+a[i+1]+a[i+2] for i in range(0,len(a)-1,2)]
这意味着
i
将获得以下值:

>>> [a[i:i+3] for i in range(0,len(a) - 1,2)]
['abc', 'cdc', 'cdc']
(当列表在
i
上循环时)。这意味着
范围(0,len(a)-1,2)
0
开始,以
2
的增量递增,直到达到最高值,但不超过
len(a)-1
。在Python3文档中有一个较长的解释,这对阅读很有帮助

这意味着它将把
a
切成所需的段(符号
a[i:j]
意味着它将把
a
i
切片到
j
)。它将首先获取片
a[0:0+3]
,然后获取片
a[2:2+3]
,最后获取片
a[4:4+3]
,这是您要查找的字符串

我们从
a
的长度中减去1,否则我们不会得到我们想要的结果:

>>> list(range(0,len(a) - 1,2))
[0, 2, 4]
您可以使用:

[a[i]+a[i+1]+a[i+2] for i in range(0,len(a)-1,2)]
这意味着
i
将获得以下值:

>>> [a[i:i+3] for i in range(0,len(a) - 1,2)]
['abc', 'cdc', 'cdc']
(当列表在
i
上循环时)。这意味着
范围(0,len(a)-1,2)
0
开始,以
2
的增量递增,直到达到最高值,但不超过
len(a)-1
。在Python3文档中有一个较长的解释,这对阅读很有帮助

这意味着它将把
a
切成所需的段(符号
a[i:j]
意味着它将把
a
i
切片到
j
)。它将首先获取片
a[0:0+3]
,然后获取片
a[2:2+3]
,最后获取片
a[4:4+3]
,这是您要查找的字符串

我们从
a
的长度中减去1,否则我们不会得到我们想要的结果:

>>> list(range(0,len(a) - 1,2))
[0, 2, 4]

在这里使用
列表理解
实际上可能与Python的禅格格不入(“简单胜于复杂”)

虽然其他列表理解答案是正确的,但要理解它们为什么有效需要一段时间

另一方面,下面这样的代码乍一看并不难理解:

>>> [a[i:i+3] for i in range(0,len(a),2)]
['abc', 'cdc', 'cdc', 'c']

在这里使用
列表理解
实际上可能与Python的禅格格不入(“简单胜于复杂”)

虽然其他列表理解答案是正确的,但要理解它们为什么有效需要一段时间

另一方面,下面这样的代码乍一看并不难理解:

>>> [a[i:i+3] for i in range(0,len(a),2)]
['abc', 'cdc', 'cdc', 'c']

这是一个多么奇怪的模式。谢谢你的回复我是新手你能告诉我这是怎么工作的吗- 1,2@AutomaSha:我对答案进行了一点扩展。谢谢:)@simeon我不知道我们可以在范围函数上做类似的单步停止乞讨的事情尝试产生一种多么奇怪的模式。谢谢你的回答我是新手你能告诉我这是怎么工作的吗len(a)- 1,2@AutomaSha:我对答案进行了一点扩展。谢谢:)@simeon我不知道我们可以在范围函数上做类似于单步停止乞讨的事情