如何解决如何从 Python 中的唯一列表访问下一个元素
我在 Python
中有一个列表
lst=['a','b','c','d','e','f']
例如我想得到:
next_element(lst,'c')
# 'd' should return adjacent value of 'c'
Pythonian 的做法是什么?
解决方法
您可以使用 next()
内置函数:
some_list = ['a','b','c','d','e','f']
random_iterator = iter(some_list)
print(next(random_iterator)) #Output = a
print(next(random_iterator)) #Output = b
next()
的语法是:
next(iterator,default)
-
iterator
—next()
从iterator
中检索下一项
-
default
(可选)——如果迭代器是 筋疲力尽(没有下一项)
-
next()
函数从迭代器返回下一项。 - 如果迭代器耗尽,则返回作为传递的
default
值 一个论点。 - 如果省略了
default
参数并且迭代器耗尽, 它引发了StopIteration
异常。
这个函数应该做你想做的 - 我认为使用 index 方法将是解决你的问题的最 Python 方式 - 虽然我可能是错的,这就是我的想法。
def next_element(lst,element):
idx = lst.index(element)
return lst[idx +1]
,
这是一个简单的方法
def next_element(l,elt):
return l[l.index(elt)+1]
如果传入函数的元素是列表中的最后一个,这将引发错误。您可能想要添加一些逻辑来处理该问题,具体取决于您的需求。此外,这假设列表中的所有元素都是唯一的。
但是,对于大列表,此解决方案会非常慢。 list.index
逐个元素搜索列表直到找到正确的元素,所以它在 O(n) 中运行。如果您尝试遍历列表但不想使用循环,则可以根据需要创建迭代器来遍历列表。
lst = ['a','f']
myit = iter(lst)
next(myit) # will return 'a'
next(myit) # will return 'b'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。