解析多个数组

2024-05-23 20:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试组织和分析数组中的大量数据。但是,我的代码似乎没有按我希望的方式运行。你知道吗

我试图使用数组A(数据数组)和B(引用数组)来输出一个可重用的数组C

输入数组:

A = [1 A B, 1 C D, 1 E F, 4 A B, 4 C D, 4 E F, 7 A B, 7 C D, 7 E F]

B = [1, 4, 7]

输出(可重用)数组:

C = [1 A B, 1 C D, 1 E F] after clearing, this array becomes

C = [4 A B, 4 C D, 4 E F] after clearing, this array becomes

C = [7 A B, 7 C D, 7 E F]

到目前为止,我的情况是:

#Creating the Reference Array. This works perfectly.
B = []
keywords = open("source.txt", 'r')
for line in keywords:
    if "1" in line or "4" in line or "7" in line:
    reference = line.split()
    rowName = reference[0]
    if rowName not in B:
        B.append(rowName)

#Creating reusable array. Does not work very well.
A = []
C = []
with open("source.txt", 'r') as temp:
    for line in temp:
        A.append(line)
for item in B:
    for item in line in A:
        print line
        C.append(line)
        print C
        del C[:]

任何帮助都将不胜感激,谢谢。你知道吗


Tags: 数据increatingforline数组openthis
2条回答

假设统一的特征是C的每个循环的第一个字段是相同的,并组成我自己的数据文件:

source.txt:
1 A B
1 C D
1 E F
4 A B
4 C D
4 E F
7 A B
7 C D
7 E F

我们可以一边构建组,只读取一次文件:

from operator import itemgetter
from itertools import groupby

lines = (line.strip().split() for line in open('source.txt'))
for leadingitem, group in groupby(lines, itemgetter(0)):
    C = list(group)
    print(C)

输出为

[['1', 'A', 'B'], ['1', 'C', 'D'], ['1', 'E', 'F']]
[['4', 'A', 'B'], ['4', 'C', 'D'], ['4', 'E', 'F']]
[['7', 'A', 'B'], ['7', 'C', 'D'], ['7', 'E', 'F']]

你就不能用filter来做这个吗?你知道吗

给出:

>>> A = ['1 A B', '1 C D', '1 E F', '4 A B', '4 C D', '4 E F', '7 A B', '7 C D', '7 E F'] 

可以按字符串的开头元素进行筛选:

>>> filter(lambda s: s[0]=='1', A)
['1 A B', '1 C D', '1 E F']
>>> filter(lambda s: s[0]=='4', A)
['4 A B', '4 C D', '4 E F']
>>> filter(lambda s: s[0]=='7', A)
['7 A B', '7 C D', '7 E F']

或者

>>> for e in ('1', '4', '7'):
...    print filter(lambda s: s.startswith(e), A)
... 
['1 A B', '1 C D', '1 E F']
['4 A B', '4 C D', '4 E F']
['7 A B', '7 C D', '7 E F']

相关问题 更多 >