如何在 Python 中通过制表符而不是元素来分隔可迭代对象

How to separate iterables by tab instead of element in Python

我正在尝试构建一个非常简单的程序来转换如下所示的数据:

ID  Freq
1   2
2   3
3   4
4   5
5   1
6   1
7   1
8   1
9   1
10  1
11  2
12  2
13  2
14  3
15  3
16  3
17  4
18  5
19  5
20  5
21  5
22  5
23  5
24  5

分为 python 中的两个列表。这是我写的 for 循环:

newlist = []
ID = []

for line in f:
    if len(line.strip())>0:
        l=line.strip().split("\t")
        for i in l[1]:
            newlist+=[i]
        for i in l[0]:
            ID+=[i]

print(newlist)
print(ID)

问题是它将多位数字中的每个数字(例如变量 "ID" 中的 10 及以上)作为单独的元素输出。

例如:

['1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4']

而不是这个:

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24']

我查看了元组的解压缩函数,但这是不同的,因为数据不是元组。相反,问题是让 python 将每个两位数字作为一个可迭代的读取,而不是将每个数字作为一个可迭代的读取。

您不需要那些内部 for 循环。直接添加l项即可。另外,使用 append 而不是 +=.

newlist = []
ID = []

for line in f:
    if len(line.strip())>0:
        l=line.strip().split("\t")
        newList.append(l[1])
        ID.append(l[0])