Pythonic 循环列表

标签 python list

假设我有一个 list ,

l = [1, 2, 3, 4, 5, 6, 7, 8]

我想获取任意元素的索引及其相邻元素的值。例如,

i = l.index(n)
j = l[i-1]
k = l[i+1]

但是,对于 i == len(l) - 1 的边缘情况,这会失败。所以我想我会把它包裹起来,

if i == len(l) - 1:
    k = l[0]
else:
    k = l[i+1]

有没有pythonic方法可以做到这一点?

最佳答案

你可以使用模运算符!

i = len(l) - 1
jIndex = (i - 1) % len(l)
kIndex = (i + 1) % len(l)

j = l[jIndex]
k = l[kIndex]

或者,为了不那么冗长:

k = l[(i + 1) % len(l)]

关于Pythonic 循环列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951020/

相关文章:

python - 类格式问题

用于多变量全局优化的 Python 模块

python - Pandas concat 外连接无法正常工作

Python合并不同长度列表的列表

Java:如何创建包含数组的对象数组?

python - 如何在 Django 条件注释的 then 子句中使用查询集表达式

python - 使用 Google+ 进行身份验证时在 session 中存储 oauth 凭据时出错

c - 链表队列。坚持指针(我认为)

c# - 使用 LINQ 将 List<dynamic> 转换为 List

python - 删除列表中的项目并获取新列表?