Python - назначать списки внутри гнезда переменной - PullRequest
1 голос
/ 19 декабря 2009

Я новичок в Python и был бы признателен за небольшую помощь.

Как можно сделать следующее:

  1. Преобразовав каждую строку в файле во вложенный список, например [['line 1', 'a'], ['line 2','b']] как мне сгладить список, чтобы каждая строка ассоциировалась с переменной. Предположим, что первый член в каждом списке, т.е. i[:][0], известен.

  2. Можно ли связать более одного списка с одной переменной, т. Е. Можно x = [list1], [list2]?

  3. Используя цикл for в списке, как эти элементы связывают аспекты этого списка с переменной? См. Пример ниже.

* * Пример тысяча двадцать-один: * * 1 022
for i in list_1:
    if i[:][0] == 'm':
        i[2] = a
        i[3] = b
        i[4] = c

Вышеприведенное возвращает NameError, a, b, c, не определено. Как определить переменные, являющиеся результатом итераций цикла for или циклов в целом?

Надеюсь, я был ясен и лаконичен, потому что растерян!

Обновление:

уточнить:

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

* +1034 * Пример: * * одна тысяча тридцать пять
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

Теперь, чтобы преобразовать каждую строку в целое число, подходит ли abs ()? Как это должно быть реализовано?

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

Любые предложения о том, как с этим бороться, очень ценятся!

Кроме того, предыдущие предложения заставили меня понять, что мое мышление создавало проблему! Спасибо!

Ответы [ 5 ]

2 голосов
/ 19 декабря 2009
# Answer to question 1 - just use the built-in functionality of lists.
#
# There is no need to use variables when lists let you do so much more
#   in a quick and organised fashion.
lines = []
for line in open_file:
   lines.append(line)

Поскольку Li0liQ уже ответил на вопросы 2 и 3 , я просто хотел бы добавить рекомендацию относительно вопроса 3. Вам действительно не нужно делать копию списка через i [:], поскольку вы просто проверяете значение в списке.

1 голос
/ 19 декабря 2009

Нет. 2: я не вижу, как это было бы возможно - конечно, вы можете назначить только одно значение переменной?

0 голосов
/ 19 декабря 2009

если я правильно понимаю, у вас есть список списков, который может иметь длину 2 или 1 (если имя переменной неизвестно)

вы, вероятно, захотите использовать dict для хранения строк

еще упомянуть i[:][0] означает что-то другое, что вы хотели, это то же самое, что i[0] (i[:] будет копией списка i)

list_1 = [['line 1', 'a'], ['line 2','b'], ['line 3']]
d = {}

for i in list_1:
    if len(i) != 2:
        continue
    key = i[1]
    value = i[0]
    d[key] = value

тогда для a вы бы использовали d[a]

если вы в конце концов захотите преобразовать их в переменные, вы можете позвонить locals().update(d)

0 голосов
/ 19 декабря 2009

хочешь:

a, b, c = i[2:5]
0 голосов
/ 19 декабря 2009
  1. Почему вы хотите связать каждый элемент в списке с переменной? Вы не могу сказать номер списка записи заранее, таким образом, вы не делаете знать точное количество переменных использовать.

  2. Вы можете использовать кортеж: x = ([list1], [list2])

  3. Вы должны написать задание наоборот:

    for i in list_1:
        if i[:][0] == 'm':
            a = i[2]
            b = i[3]
            c = i[4]
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...