我的数据集有10000多个条目,为什么这没有反映在我的列表中?

2024-09-28 23:26:41 发布

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

# open, read, close output.txt (smaller version)
f = open("10thousand.txt", "r")
data = f.read()
f.close

# clean the data
data = data.replace('\n', '\t')
data = data.split('\t')

ageList = []

# append the data (ages) into the list
for i in data:
    ageList.append(i)

data.sort()

# print(ageList)

gen1 = []
gen2 = []
gen3 = []
gen4 = []
gen5 = []

# cycle through, add ages to our generation groups
for i in range(len(ageList)):
    if i >= 16 and i < 18:
        gen1.append(i)
    elif i > 17 and i < 34:
        gen2.append(i)
    elif i > 33 and i < 54:
        gen3.append(i)
    elif i > 53 and i < 73:
        gen4.append(i)
    elif i > 72 and i <= 101:
        gen5.append(i)
    else:
        pass

我的列表在每个列表中只显示10-30个数据点,即使我的输入文件超过10000个。我写这篇文章是为了学校的期末考试,我似乎不知道问题在哪里。你知道吗


Tags: andtheintxtforclosereaddata
2条回答

您正在检查列表的索引并将其附加到各代。您需要调整代码以引用和附加年龄:

#append the data (ages) into the list
for i in data:
    ageList.append(int(i))

...

#cycle through, add ages to our generation groups
for age in ageList:
    if age >= 16 and age < 18:
        gen1.append(age)
    elif age > 17 and age < 34:
        gen2.append(age)
    elif age > 33 and age < 54:
        gen3.append(age)
    elif age > 53 and age < 73:
        gen4.append(age)
    elif age > 72 and age <= 101:
        gen5.append(age)
    else:
        pass
  • 您可以在文件上使用with。这样它就会自动关闭。

  • 首先,将数字读入列表并转换为 int

  • .split()对所有空白字符进行拆分,因此无需转换 从一个\n到另一个\t

  • 您可以在列表上迭代,而不是循环一个范围。

像这样的。你知道吗

with open("10thousand.txt", "r") as numbers:
    ageList = [int(n) for n in numbers.split()]

gen1 = []
gen2 = []
gen3 = []
gen4 = []
gen5 = []
for age in ageList:
    if age >= 16 and age < 18:
        gen1.append(age)
    elif age > 17 and age < 34:
        gen2.append(age)
    elif age > 33 and age < 54:
        gen3.append(age)
    elif age > 53 and age < 73:
        gen4.append(age)
    elif age > 72 and age <= 101:
        gen5.append(age)
    else:
        pass

相关问题 更多 >