Переберите список, чтобы получить значения в указанной последовательности - PullRequest
0 голосов
/ 20 февраля 2020

У меня был начальный кортеж, по которому я пытался выполнить итерацию для выполнения дальнейших вычислений. Тем не менее, я получаю ошибку «too many values to unpack», которая была решена с помощью следующих предложений из этого вопроса, заданного ранее (Python - слишком много значений для распаковки ). Однако сейчас, после преобразования его в список, у меня есть другая ошибка 'list' object has no attribute 'reshape'.

Мой код выглядит так:

Z=[([A,3],[A1,6])]  #A and A1 are 2x2 matrices 
y=[]
for data,label in Z:

    x = data.reshape((4,))
    y.append(int(label))

Я могу понять причину ошибки. В этом случае я хочу, чтобы l oop запускался два раза (потому что у меня есть два набора данных [A-3, A1-6]), и data, label будет: A, 3 и A1, 6. Но это неверно истолковывается как data = [A,3] и label = [A1,6].

Каким будет правильный способ l oop через этот список и генерировать данные так, как я хочу?

Примечание: Z не обязательно должен быть списком, я могу изменить его на кортеж, если это облегчит жизнь.

1 Ответ

2 голосов
/ 20 февраля 2020

Кортеж находится внутри списка. Вы просто перебираете список, но не элементы кортежа. Вам нужны вложенные циклы.

for t in Z:
    for data, label in t:
        x = data.reshape(4,)
        y.append(int(label))

Вам не нужны вложенные циклы, если вы избавляетесь от списка.

Z=([A,3],[A1,6])  #A and A1 are 2x2 matrices 
y=[]
for data,label in Z:
    x = data.reshape((4,))
    y.append(int(label))
...