如何从Python中的唯一列表访问下一个元素

如何从Python中的唯一列表访问下一个元素,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,我在Python lst=['a', 'b', 'c', 'd', 'e', 'f'] 对于给定值,访问列表中下一个元素的最佳方式是什么 例如,我想得到: next_element(lst, 'c') # 'd' should return adjacent value of 'c' Pythonian的方法是什么?这个函数应该做你想做的事情-我认为使用index方法将是解决你的问题的最Pythonian的方法-虽然我可能错了,但这正是我的想法 def next_element(lst, e

我在
Python

lst=['a', 'b', 'c', 'd', 'e', 'f']
对于给定值,访问列表中下一个元素的最佳方式是什么

例如,我想得到:

next_element(lst, 'c')
# 'd' should return adjacent value of 'c'

Pythonian的方法是什么?

这个函数应该做你想做的事情-我认为使用index方法将是解决你的问题的最Pythonian的方法-虽然我可能错了,但这正是我的想法

def next_element(lst, element):
   idx = lst.index(element)
   return lst[idx +1]

这个函数应该做你想做的-我认为使用索引方法将是解决你的问题的最pythonian的方法-虽然我可能错了,但这正是我的想法

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', 'b', 'c', 'd', 'e', 'f']
myit = iter(lst)
next(myit) # will return 'a'
next(myit) # will return 'b'

下面是一个简单的方法

def next_element(l, elt):
    return l[l.index(elt)+1]
如果传入函数的元素是列表中的最后一个元素,则会引发错误。根据您的需求,您可能需要添加一些逻辑来处理该问题。此外,这假定列表中的所有元素都是唯一的

然而,对于一个大的列表,这个解决方案将非常缓慢
list.index
逐个元素搜索列表元素,直到找到正确的元素,因此它在O(n)中运行。如果您试图遍历列表,但不想使用循环,可以根据需要创建迭代器遍历列表

lst = ['a', 'b', 'c', 'd', 'e', 'f']
myit = iter(lst)
next(myit) # will return 'a'
next(myit) # will return 'b'
您可以使用内置功能:

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
  • 默认值
    (可选)-如果迭代器为 耗尽(没有下一项)

  • next()
    函数从迭代器返回下一项
  • 如果迭代器耗尽,它将返回作为 争论
  • 如果省略了
    默认值
    参数并且迭代器已用尽, 它引发
    StopIteration
    异常
  • 您可以使用内置功能:

    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
  • 默认值
    (可选)-如果迭代器为 耗尽(没有下一项)

  • next()
    函数从迭代器返回下一项
  • 如果迭代器耗尽,它将返回作为 争论
  • 如果省略了
    默认值
    参数并且迭代器已用尽, 它引发
    StopIteration
    异常