python - 使用环绕遍历所有连续元素对(或三元组)
问题描述
我发现了许多类似的问题,但没有一个与环绕方面有关。
我正在处理一些代码,其中有很多列表,其中一个项目连接到以下项目,甚至是以下项目和上一个项目。因此我得到了很多这种模式,虽然有时我只使用current_item
and following_item
,所以没有previous_item
.
for i in range(len(my_list)):
current_item = my_list[i]
following_item = my_list[(i + 1) % len(my_list)]
previous_item = my_list[(i - 1) % len(my_list)]
或者,使用enumerate
:
for i, current_item in enumerate(my_list):
following_item = my_list[(i + 1) % len(my_list)]
previous_item = my_list[(i - 1) % len(my_list)]
对我来说,这两者似乎都不是很“pythonic”。有没有一种很好的pythonic方式来做到这一点?我已经看到了一些相关问题的答案,他们在其中做类似的事情zip(my_list, my_list[1:])
,但这并没有环绕,我也没有看到一个很好的方法来扩展它以包含前一个项目。
解决方案
可能您正在寻找这样的东西:
mylist = [1,2,3,4,5,6,7,8,9,10]
for previous, current, following in zip([mylist[-1]] + mylist[:-1], mylist, mylist[1:] + [mylist[0]]):
print(previous, current, following)
在这里,我简单地使用了 zip 和列表连接。
推荐阅读
- sql-server - 时间 + 日期到 DateTime 的确定性加法
- vb.net - 有没有办法将转换为字节的 PDF 显示到浏览器中?(不是 Windows 应用程序)ASP.NET/VB.NET
- javascript - 使用 DOJO 在 Javascript 中格式化字符串
- mysql - MySQL group_by 和 max 没有按预期工作
- r - 将行中的数据添加到R中的列
- apollo - Apollo:延迟重新获取查询
- python - Pandas:如何根据特定的行值将值应用于一组行?
- ibm-information-server - 安装信息服务器 Windows XP
- react-native - React Native Modal Dropdown 现在是键/值吗?
- javascript - 在我的 Wordpress 主页上时,浏览器底部出现 Jquery 错误