python - 蟒蛇虫?我做错了什么?
问题描述
我正在尝试制作一个简单的迭代器,它在列表中循环并从 python 中的列表中返回三个连续的数字,但我得到了非常奇怪的结果 - 代码只有在列表中的数字按升序排列时才能正常工作。
import itertools
c=[0,1,2,3,0,5,6]
counter=itertools.cycle(c)
def func(x):
if x==len(c)-1:
return c[x],c[0],c[1]
elif x==len(c)-2:
return c[x],c[len(c)-1],c[0]
else:
return c[x],c[x+1],c[x+2]
for i in range(len(c)+2):
print(func(next(counter)))
'我试图创建一个简单的迭代器,它循环遍历一个列表并从 python 中的列表中返回三个连续的数字,但我得到了非常奇怪的结果 - 代码只有在列表中的数字按升序排列时才能正常工作。Atom 打印以下内容第 5 个元组。请帮忙..
(0, 1, 2)
(1, 2, 3)
(2, 3, 0)
(3, 0, 5)
(0, 1, 2)
(5, 6, 0)
(6, 0, 1)
(0, 1, 2)
(1, 2, 3)
'
解决方案
我相信您混淆了 c 和索引的值。您似乎func
期望传递一个索引,但实际上您是从c
. 注意:counter
循环 c 的值而不是索引。
另请注意,在 python 中,您可以使用负索引,因此您可以写c[-1]
为c[len(c) - 1]
.
推荐阅读
- java - 连接重置 - Java(基础套接字状态保持建立)Azure VM
- php - 在 Azure Web App 服务的 wwwroot 之外部署 PHP 文件
- javascript - 使用JavaScript计算两个给定点的方位角?
- javascript - lodash 构造函数的正确导入是什么?
- reactjs - 当父状态更改而不重新渲染子状态时,如何使用 npm 'react-youtube' 调用 event.target.playVideo()?
- laravel-5 - 如何在保存的同时将主键值存储到外键
- sql - 在高负载下收到奇怪的 SQL 连接错误
- javascript - 当我尝试启动我的反应应用程序时,我遇到了一个不寻常的错误。它说 CleanWebpackPlugin 不是构造函数
- excel - 如何克服错误 1004 对象 _global 范围失败
- react-native - TypeError:undefined is not a function(评估'store.getState()')