Разделить столбцы из текстового файла на списки в python

У меня есть текстовый файл, содержащий 8 столбцов, например

100 40 37 98 47 55 75 67
50 84 93 67 85 90 42 57
68 95 74 75 87 95 32 86

Для моей функции мне нужно найти средние значения и т. д. для всех столбцов, когда указано. Поэтому для этого мне нужно уметь работать со столбцами, и я не знаю, как преобразовать все столбцы в списки.

f=open(file,"r")
lines=f.readlines()
result=[]
for i in lines:
    result.append(i.split(' ')[1])
f.close()

У меня есть только это, чтобы извлечь 1 столбец, но я был бы признателен, если бы кто-нибудь помог мне извлечь каждый столбец. Мой учитель хочет, чтобы мы использовали чистый Python, поэтому никаких дополнений, таких как panda или numpy. Спасибо

Это легко выполнимо на питоне, однако я предлагаю вам взглянуть на pandas.

Josef Korbel 06.03.2019 20:23

У Numpy также есть функции, которые сделают это очень простым, если вы готовы выйти за пределы «чистого» python.

busybear 06.03.2019 20:24

Я считаю, что мой учитель хочет, чтобы мы использовали чистый питон

Joey Jordan 06.03.2019 20:27

Для вопросов домашнего задания всегда следует указывать, что это вопрос домашнего задания и соответствующие ограничения.

John 06.03.2019 21:15

OP указал домашнее задание и ограничения в исходном вопросе: «Мой учитель хочет, чтобы мы использовали чистый python, поэтому никаких дополнений, таких как panda или numpy». -- довольно ясно.

chickity china chinese chicken 06.03.2019 21:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
5
624
2

Ответы 2

Я бы рекомендовал извлечь строки, а затем перенести полученный список списков:

with open(filename) as f:
   columns = list(zip(*(map(int, row.split()) for row in f)))

Я могу помочь объяснить любую часть этого, если вы хотите.

f = open(filename,"r")

lines = []

for line in f:
    lines.append(map(int, line.strip().split()))

f.close()

Теперь у нас есть список списков целых чисел:

print(lines)
# [[100, 40, 37, 98, 47, 55, 75, 67], [50, 84, 93, 67, 85, 90, 42, 57], [68, 95, 74, 75, 87, 95, 32, 86]]

Преобразование списков строк в списки столбцов называется «транспонированием», поэтому, используя этот ответ Транспонировать список списков, мы можем получить результат:

result = map(list, zip(*lines))

print(result)
# [[100, 50, 68], [40, 84, 95], [37, 93, 74], [98, 67, 75], [47, 85, 87], [55, 90, 95], [75, 42, 32], [67, 57, 86]]

Другие вопросы по теме