【问题标题】:How to access the next element from a unique list in Python如何从 Python 中的唯一列表中访问下一个元素
【发布时间】:2021-03-09 15:49:47
【问题描述】:

我在Python有一个列表

lst=['a', 'b', 'c', 'd', 'e', 'f']

对于给定值,访问列表中下一个元素的最佳方法是什么。

例如我想得到:

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

Pythonian 的做法是什么?

【问题讨论】:

    标签: python python-3.x list list-comprehension


    【解决方案1】:

    你可以使用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)
    
    1. iteratornext()iterator 检索下一项
    2. default(可选)——如果迭代器是,则返回此值 筋疲力尽(没有下一项)

    1. next() 函数从迭代器返回下一项。
    2. 如果迭代器用完,它返回default 值传递为 一个论点。
    3. 如果省略default参数并且迭代器耗尽, 它引发了StopIteration 异常。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这是一个简单的方法

        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'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-26
          • 1970-01-01
          • 1970-01-01
          • 2020-12-30
          • 1970-01-01
          • 2023-02-05
          相关资源
          最近更新 更多