Понимание списка Python, строка и столбец подсписка - PullRequest
0 голосов
/ 16 января 2019

Привет, у меня есть список Python A, и в моем списке c я расширяю только два столбца. Как я могу ограничить строки, чтобы мой список C содержал только строки 2 и 3

ожидаемое значение

[[2,1],
 [3,0]]

есть ли способ сделать это через списки

A = [[0,1,4,5,3],
     [1,0,2,5,4],
     [4,2,0,1,5],
     [1,3,1,0,3],
     [3,4,5,3,0]]

c=[]
print ('Print A')
print('\n'.join([''.join(['{:4}'.format(item) for item in row]) for row in A]))

c.extend( [[x[1],x[3]] for x in A])

print ('Print c')

print('\n'.join([''.join(['{:4}'.format(item) for item in rrr]) for rrr in c]))

1 Ответ

0 голосов
/ 16 января 2019

да, выберите нужные вам индексы строк / столбцов:

A = [[0,1,4,5,3],
     [1,0,2,5,4],
     [4,2,0,1,5],
     [1,3,1,0,3],
     [3,4,5,3,0]]

rows = [2,3]
cols = [1,3]

C = [[A[i][j] for j in cols] for i in rows]

результат:

>>> C
[[2, 1], [3, 0]]

Может быть, немного лучше, потому что он избегает вычисления A[i], каждый раз добавляя другое понимание, просто чтобы назвать строку:

C = [[row[j] for j in cols] for row in (A[i] for i in rows)]

это базовый подход к Python. Если у вас есть большие матрицы и список индексов, я полагаю, что решение numpy будет быстрее.

...