python - 如何使循环从列表的中间迭代到开头?

标签 python

我正在尝试使用 for i in range() 循环在列表中从列表索引的中间迭代到开头。我该怎么做?假设我们有一个列表

a = ['apple', 'peach', 'orange', 'melon', 'banana'] 

如何从 'orange' 迭代到 'apple'

我的预测:

for i in range(a[orange], 0)

我是编程新手,很抱歉这个明显的问题。

最佳答案

你快到了...使用 list.index 查找值,然后从列表中反转一个切片,例如:

a = ['apple', 'peach', 'orange', 'melon', 'banana']
b = a[a.index('orange')::-1]
# ['orange', 'peach', 'apple']

您可能希望对列表中未找到该值的位置进行一些错误处理,例如:

try:
    b = a[a.index('not_in_list')::-1]
except ValueError:
    b = [] # or other sensible result

然后可能是一个辅助函数:

def backwards_from(lst, value):
    try:
        return lst[lst.index(value)::-1]
    except ValueError:
        return [] # or other sensible result

for item in backwards_from(a, 'orange'):
    print item
#orange
#peach
#apple

for item in backwards_from(a, 'cabbage'):
    print item
# nothing to print

如果你真的,真的想使用 range,那么你从索引开始,递减 -1,直到列表的开始(即 -1因为结尾不包含在范围内),例如:

for idx in range(a.index('orange'), -1, -1):
    print a[idx]

关于python - 如何使循环从列表的中间迭代到开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770135/

相关文章:

python - 我怎样才能将我的Python列表转换为另一种列表格式

Python 在新样式类中继承旧样式类型

python - 如何在 Python 中解析 URL 为 "html written"的 HTML 代码?

python - Python 和处理计算之间的区别

python - 在 Python 程序中嵌入 Python shell

python - 在 Python 中初始化二维数组

python - 在检查点 Tensorflow 中找不到 key <variable_name>

python - 有没有办法用 POSIX_FADV_DONTNEED 标志打开 hdf5 文件?

python - 行李箱工作标签没有吗? ---导入错误: No module named 2. 1.2

python - ZeroMQ Hello World 客户端 - 服务器。来自服务器的回复显然没有到达