在Python中将一个数组拆分成两个数组

3

我有一个数字列表,像这样:

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

以下是我目前的代码,我已经删除了单词“through”,现在它会打印一个数字列表。
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中每隔N个元素拆分列表 - Jongware
对于您来说,代码应该是 print (l[::2],l[1::2]) - Jongware
3个回答

1
尝试以下内容:
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]

0
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')]

我认为这是一个列表推导式,但你也可以使用过滤器。


0
你可以尝试使用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']]

然后您只需提取每个嵌套列表的第一个元素并将其单独存储在变量中,然后继续提取第二个元素。

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接