【问题标题】:Splitting an array into two arrays in Python在 Python 中将一个数组拆分为两个数组
【发布时间】:2020-06-25 09:05:30
【问题描述】:

我有一个这样的数字列表;

7072624 through 7072631
7072672 through 7072687
7072752 through 7072759
7072768 through 7072783

下面的代码是我目前所拥有的,我已经删除了“通过”这个词,现在它会打印一个数字列表。

import os

def file_read(fname):
    content_array = []

    with open (fname) as f:
        for line in f:
            content_array.append(line)
        #print(content_array[33])

        #new_content_array = [word for line in content_array[33:175] for word in line.split()]

        new_content_array = [word for line in content_array[33:37] for word in line.split()]
        while 'through' in new_content_array: new_content_array.remove('through')

        print(new_content_array)

file_read('numbersfile.txt')

这给了我以下输出。

    ['7072624', '7072631', '7072672', '7072687', '7072752', '7072759', '7072768', '7072783']

所以我想做但努力寻找的是如何将“new_content_array”拆分为两个数组,因此输出如下。

    array1 = [7072624, 7072672, 7072752, 7072768]

    array2 = [7072631, 7072687, 7072759, 7072783]

然后我希望能够从数组 1 中的值中获取数组 2 中的每个值

7072631 - 7072624

7072687 - 7072672

7072759 - 7072752

7072783 - 7072768

我一直在搜索,但找不到与我的情况相似的任何东西。

提前致谢!

【问题讨论】:

标签: python arrays


【解决方案1】:
l = ['7072624', '7072631', '7072672', '7072687', '7072752', '7072759','7072768', '7072783']
l1 = [l[i] for i in range(len(l)) if i % 2 == 0]
l2 = [l[i] for i in range(len(l)) if i % 2 == 1]
print(l1) # ['7072624', '7072672', '7072752', '7072768']
print(l2) # ['7072631', '7072687', '7072759', '7072783']
result = list(zip(l1,l2))

结果你会得到:

[('7072624', '7072631'), ('7072672', '7072687'), ('7072752', '7072759'), ('7072768', '7072783')]

我认为这是理解列表,但您也可以使用过滤器

【讨论】:

    【解决方案2】:

    试试下面这个:

    list_data = ['7072624', '7072631', '7072672', '7072687', '7072752', '7072759', '7072768', '7072783']
        array1 = [int(list_data[i]) for i in range(len(list_data)) if i % 2 == 0]
        array2 = [int(list_data[i]) for i in range(len(list_data)) if i % 2 != 0]
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用 through 关键字来分割线, 然后在列表理解中使用 lambda 函数和正则表达式删除所有非数字字符,例如换行符或空格

      import os
      import re
      def file_read(fname):
          new_content_array = []
          with open (fname) as f:
              for line in f:
                  line_array = line.split('through')
                  new_content_array.append([(lambda x: re.sub(r'[^0-9]', "", x))(element) for element in line_array])
      
          print(new_content_array)
      
      file_read('numbersfile.txt')
      

      输出如下所示:

      [['7072624', '7072631'], ['7072672', '7072687'], ['7072752', '7072759'], ['7072768', '7072783']]]

      然后你可以提取每个嵌套列表的第一个元素,分别存储在一个变量中,以此类推,第二个元素。

      祝你好运

      【讨论】:

        猜你喜欢
        • 2015-04-20
        • 1970-01-01
        • 2012-04-13
        • 1970-01-01
        • 1970-01-01
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多