【问题标题】:Print specific values from a multi-value element array in python从python中的多值元素数组中打印特定值
【发布时间】:2017-06-24 02:48:32
【问题描述】:

在 python 3 中,我试图创建一个 array 元素,其中每个元素由两个值组成。这些值并不是真正的key-value 对,因为它们彼此相关,这意味着value 1 可能是key 对应value 两个,就像value 两个可能是key 到@987654328 @ one 所以我认为dictionary 不合适。

my_list = [ (VALUE1, OFFSET1), (VALUE2, OFFSET2) ]

def printList(list):
    for item in list:
        print(item)

如何分别收集VALUEOFFSET "values"?比如

theValue  = list[0].VALUE
theOffset = list[0].OFFSET

我在想一个 array 的结构可能吗?

【问题讨论】:

  • 您是否希望明确地使用 dot notation 来访问 list[0].VALUElist[0].OFFSET 的元素?
  • 点符号是我所知道的唯一一种专门指代精确值的方法。点符号不是必需的。

标签: python arrays data-structures python-3.6


【解决方案1】:

您可以使用zip,它将列表转置并将同一位置的元素收集到结果中的一个元素:

value, offset = zip(*my_list)

value
#('VALUE1', 'VALUE2')

offset
#('OFFSET1', 'OFFSET2')

【讨论】:

    【解决方案2】:
    def printList(my_list):
        for item in my_list:
            print('Value ', item[0])
            print('Offset ', item[1])
    

    for 循环遍历my_list。循环中的每个元素都作为元组接收,例如变量 item 中的(VALUE, OFFSET)。所以item[0]VALUEitem[1]OFFSET。然后我们打印出来。

    【讨论】:

    • 你能解释一下你的答案吗?
    • @idjaw:for 循环遍历 my_list。循环中的每个元素都作为变量项中的 (VALUE, OFFSET) 之类的元组接收。所以 item[0] 是 VALUE,item[1] 是 OFFSET。然后我们打印出来。
    • 编辑您的答案以包含此解释,以便读者了解您提供的答案是什么。
    • 我选择这个是因为它展示了如何轻松地从给定的元素编号中提取两个值。
    【解决方案3】:

    我会这样做:

    my_list = [ ("VALUE1", "OFFSET1"), ("VALUE2", "OFFSET2") ]
    
    def printList(my_llst):
      values = []
      ofts = []
      for item in my_llst:
          values.append(item[0])
          ofts.append(item[1])
      return (values,ofts)
    

    (['VALUE1', 'VALUE2'], ['OFFSET1', 'OFFSET2'])

    【讨论】:

      【解决方案4】:

      由于您有 listtuples,而不是:

      theValue  = list[0].VALUE
      theOffset = list[0].OFFSET
      

      你可以使用:

      theValue = list[0][0]
      theOffset = list[0][1]
      

      所以在你的for-loop:

      def printList(list):
          for item in list:
              print('VALUE: {}'.format(item[0]))
              print('OFFSET: {}'.format(item[1]))
      

      如果要获取list 中的所有值以及单独list 中的偏移量,可以使用list-comprehension

      values = [x[0] for x in list]
      offsets = [x[1] for x in list]
      

      更重要的一点,避免使用像list 这样的built-in 函数作为变量,改用别的东西。

      【讨论】:

        【解决方案5】:

        尝试使用list comprehension

        theValue  = [value[0] for value in my_list] 
        theOffset = [offset[0] for value in offset]
        

        【讨论】:

          【解决方案6】:

          我觉得namedtuple可以帮到你。

          from collections import namedtuple
          
          Element = namedtuple("Element", ["value", "offset"])
          
          element_list = []
          
          for value, offset in my_list:
          
              element_list.append(Element(value, offset))
          
          for element in element_list:
          
              print element.value, element.offset
          

          如果要分别获取所有值和偏移量,可以使用 numpy 将 my_list 转换为 numpy.array,这是一个二维数组。

          import numpy as np
          
          2d_array = np.array(my_list)
          
          values = 2d_array[:, 0]
          offsets = 2d_array[:, 1]
          

          【讨论】:

            猜你喜欢
            • 2018-09-07
            • 1970-01-01
            • 1970-01-01
            • 2012-02-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-27
            • 2022-01-10
            相关资源
            最近更新 更多