【问题标题】:How to fetch multiple elements from List [duplicate]如何从列表中获取多个元素[重复]
【发布时间】:2021-04-14 21:25:02
【问题描述】:

我有列表 l = [1,3,4,5,7,6,4,5,10,1],我想获取位置 4、8 的元素。我正在使用命令 l[4, 8] 来获取这两个元素,但它不起作用。方法不对吗?

【问题讨论】:

标签: python


【解决方案1】:
>>> l = [1,3,4,5,7,6,4,5,10,1]
>>> a,b = l[4], l[8]
>>> a,b
(7, 10)
>>> a
7
>>> b
10
>>>

【讨论】:

    【解决方案2】:

    你可以这样做:

    l = [1,3,4,5,7,6,4,5,10,1]
    out = list((l[2], l[4], l[8]))
    print(out)
    

    输出:

    [4, 7, 10]
    

    【讨论】:

      【解决方案3】:

      关于列表

      当访问一个列表时,你给它一个索引 i,它会返回第 i 个元素:

      >>> x = [0,1,2,3,4,5,6,7]
      >>> print(x[3])
      3
      

      请注意,当访问元素“3”时,它实际上会给出列表的第四个元素。这是因为在几乎每种编程语言中,计算数组位置(python 中的列表)都是从零开始的。 (f*** Lua)

      Python 有两个额外的功能,其中包含在其他语言中通常没有的列表。

      第一个是负覆盖,当你给列表一个负索引时,它将从列表的后面开始计数:

      >>> print(x[-1])
      7
      

      第二种是原生列表切片,你可以给列表两个数字,它会返回这两个索引之间的元素子集:

      >>> print(x[1:3])
      [1, 2]
      >>> print(x[3:-2])
      [3, 4, 5]
      

      针对您的具体问题:

      正如其他用户所提到的,您可以通过用逗号分隔这两个元素来分别访问它们:

      >>> L = [1,3,4,5,7,6,4,5,10,1]
      >>> out = L[4], L[8]
      >>> print(out)
      (7, 10)
      

      Out 是一个元组,基本上是一个你不能写入的列表。您可以通过在定义左侧用逗号分隔变量来将元组(或列表)中的变量分隔为单独的变量:

      >>> a, b = out
      >>> print(a)
      7
      >>> print(b)
      10
      

      如果您需要经常这样做,这里有一个函数,它接收一个值列表和一个索引列表,创建一个新列表并将所有给定值复制到新列表中:

      def get_from_list(values: list, indices: list):
          out = list()
      
          for i in indices:
              out.append(values[i])
      
          return out
      
      a, b = get_from_list(L, [4, 8])
      

      我很确定这是一个糟糕的解决方案性能明智,但代码可读性很强,我认为这对于学习者上下文来说已经足够了。

      【讨论】:

        猜你喜欢
        • 2022-07-09
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 2014-12-16
        • 1970-01-01
        相关资源
        最近更新 更多