#python #list #tuples #readfile
#python #Список #кортежи #readfile
Вопрос:
Я хочу прочитать текстовый файл с помощью Python. Мой список должен быть таким:
mylist = [((5., 10.), (6.4, 13)),
((7., 11.), (5.6, 5.)),
((4., 5.67), (3.1, 2.)),
((13., 99.), (3.2, 1.1))]
Мой текстовый файл:
text file: 5., 10., 6.4, 13.
7., 11., 5.6, 5.
4., 5.67, 3.1, 2.
13., 99., 3.2, 1.1
код python:
with open('test.txt') as f:
mylist = [tuple((tuple(map(float, i.split(','))))) for i in f]
print(mylist)
Мой результат:
[(5.0, 10.0, 6.4, 13.0), (7.0, 11.0, 5.6, 5.0), (4.0, 5.67, 3.1, 2.0), (13.0, 99.0, 3.2, 1.1)]
Большое вам спасибо
Ответ №1:
Вы можете сделать еще один шаг вперед:
lst = [(5.0, 10.0, 6.4, 13.0), (7.0, 11.0, 5.6, 5.0), (4.0, 5.67, 3.1, 2.0), (13.0, 99.0, 3.2, 1.1)]
lst2 = [(tt[:2],tt[2:]) for tt in lst]
print(lst2)
Вывод
[((5.0, 10.0), (6.4, 13.0)), ((7.0, 11.0), (5.6, 5.0)), ((4.0, 5.67), (3.1, 2.0)), ((13.0, 99.0), (3.2, 1.1))]
Ответ №2:
Вам нужно разделить строки на два отдельных кортежа. Изменение mylist
на это будет работать:
mylist = [tuple([tuple(s[:2]), tuple(s[2:])])
for s in [list(map(float, i.split(",")))
for i in f]]
Комментарии:
1. Я пытаюсь это сделать, но в моем выводе есть проблема:[((‘5.’, ‘ 10.’), (‘ 6.4’, ‘ 13. n’)), ((‘7.’, ‘ 11.’), (‘ 5.6’, ‘ 5.n’)), ((‘4.’, ‘ 5.67’), (‘ 3.1’, ‘ 2. n’)), ((’13.’, ‘ 99.’), (‘ 3.2’, ‘ 1.1’))]
2. Это несовместимо с выводом, который вы опубликовали ранее. Пожалуйста, устраните несоответствие.
3. кто-то пропустил преобразование с плавающей запятой — добавил это сейчас
4. Спасибо за вашу помощь, но я не знаю, почему возникла эта ошибка: для s в [map(float, i.split(«,»)) TypeError: объект ‘map’ не подлежит подписке
5. ах, в python3 вам нужно обернуть
map
list
вызовом, поскольку он возвращает итератор — снова обновляется