【问题标题】:Split each string in list and store in multiple arrays拆分列表中的每个字符串并存储在多个数组中
【发布时间】:2017-12-20 10:55:12
【问题描述】:

我有一个如下所示的列表:['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']

我想最终得到这三个数组:[1,2,3,4][0,0.5,1,1.5][0,0.25,0.5,0.75]

即我想要每个列表项的第一个值并将其存储在一个数组中,并对第二个和第三个值执行相同的操作。

我试过了

for i in coordinates[:]:
    number,x,y=i.split(' ')

还尝试使用number[]number.append 但这些似乎都不起作用

【问题讨论】:

    标签: python arrays list split


    【解决方案1】:

    这可以按如下方式完成:

    list(zip(*(list(map(float, s.split())) for s in coordinates)))
    

    首先我们遍历列表中的所有字符串并将它们拆分

    [s.split() for s in coordinates]
    

    然后我们mapfloat 函数对所有单独的字符串进行转换,以将它们转换为浮点数:

    [list(map(float, s.split())) for s in coordinates]
    

    然后我们使用zip 以您想要的方式获取它们。

    【讨论】:

      【解决方案2】:

      类似于@ikkuh,但具有“可配置”类型:

      data = ['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']
      tp = [int, float, float] 
      
      parsed = ((t(j) for t, j in zip(tp, record.split())) for record in data)
      idx, x, y = (list(i) for i in zip(*parsed))
      idx
      # [1, 2, 3, 4]
      x
      # [0.0, 0.5, 1.0, 1.5]
      y
      # [0.0, 0.25, 0.5, 0.75]
      

      【讨论】:

      • Python 2 版本:map(map, tp, zip(*map(str.split, data)))。不确定我之前是否映射过map :-)
      • @StefanPochmann Gosh,这确实是不可读的。顺便说一句,首先转置看起来是个好主意。
      • 嗯,我认为它的可读性很强。但是,是的,我没有将其发布为答案的一个原因是我没有心情解释它:-P
      • @StefanPochmann 这是嵌套的maps,我——或者更确切地说是我的旋转头——画线。
      【解决方案3】:

      创建三个新列表,并通过输入:

      input = ['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']
      x_list = []
      y_list = []
      z_list = []
      
      for i in input:
          x, y, z = i.split(' ')
          x_list.append(x)
          y_list.append(y)
          z_list.append(z)
      

      【讨论】:

        【解决方案4】:

        这是一种不使用 for 循环的方法,使用 lambda:

        a=['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']
        
        print(list(zip(*list((map(lambda y:y.split(),a))))))
        

        输出:

        [('1', '2', '3', '4'), ('0', '0.5', '1', '1.5'), ('0', '0.25', '0.5', '0.75')]
        

        【讨论】:

          猜你喜欢
          • 2017-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-15
          • 1970-01-01
          • 2016-06-04
          • 1970-01-01
          相关资源
          最近更新 更多