Автор оригинала: Team Python Pool.
Список Python 2d: От Базового до продвинутого
Список является одним из самых полезных типов данных в python. Мы можем добавлять значения всех типов, таких как целые числа, строка, поплавок, в один список. Инициализация списка может быть выполнена с помощью квадратных скобок []. Ниже приведен пример 1d – списка и 2d-списка. Поскольку мы не можем использовать 1d list в каждом случае использования, поэтому используется python 2d list. Также известный как списки внутри списка или вложенный список. Количество элементов в 2d-списке будет равно количеству строк * количеству столбцов. 2D-список выглядит примерно так.
list1_d=['sonu', 'ashu', 50, 10.1] list_2d=[ [5,6,7,7] , [5,4,6,7] , [9,8,9,10] ]
Графическое представление
Графически двумерный список может быть представлен в виде сетки.
Как объявить/инициализировать 2d-список python
Существует несколько способов инициализации 2d-списка в python.
- Это основной подход к созданию 2d-списка в python.
rows=[] columns=[] for i in range(3): for j in range(3): columns.append(1) rows.append(columns)
ВЫХОД-
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
- Предположим, вы хотите создать 2d-список с координатами в качестве его значений.
x = [[(i,j) for j in range(3)] for i in range(3)]
[[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)], [(2, 0), (2, 1), (2, 2)]]
- Если мы хотим создать 2d список с 0 в качестве его значения:
x = [[0 for j in range(3)] for i in range(3)]
Выход-
[ [0, 0, 0], [0, 0, 0], [0, 0, 0] ]
Как получить значения из списка python 2d
2D список может быть доступен по двум атрибутам а именно строке и столбцам и для доступа к этим спискам мы используем следующий код-
for i in range(len(rows)): for j in range(len(columns)): ) print("\n")
Выход:
1 1 1 1 1 1 1 1 1
Мы также можем использовать концепцию среза для извлечения данных из любых строк и столбцов, которые мы хотим.
Предположим, что мы хотим получить только строки 1 и 2 и все столбцы, для этой цели мы можем использовать нарезку.
list1 = [ [1,2,3], [4,5,6], [7,8,9], [10,11,12] ] print(list1[1:3][:]) """ [1:3] is used for rows-1,2[:] is used to represent all values"""
Выход:
[[4, 5, 6], [7, 8, 9]]
Теперь предположим, что мы хотим получить все строки, но только столбец 1:
print(list1[:][1])
Выход-
[4,5,6]
Но это не колонка 1. Почему? Именно потому, что это ограничение 2d-списка python, мы не можем выполнять операции по столбцам над 2d-списком. Для этой цели у нас есть массив NumPy.
Ограничения 2d-списка
Как видно из последнего примера, мы не можем выполнить операцию по столбцам в 2d-списке. Для этой цели мы должны использовать 2d массив NumPy. Чтобы преобразовать 2d список в 2d массив мы сначала должны импортировать библиотеку NumPy с помощью pip install NumPy а затем выполнить следующие операции:
list_2d=[[1,2,3] ,[4,5,6] ,[7,8,9],[10,11,12]] import numpy #importing numpy library .array(list_2d) #array function converts list into array print(type(list1)) print(type(arr_2d))
Выход –
И теперь, если мы попытаемся таким же образом найти 1-й столбец всех строк, мы получим правильный ответ с помощью 2d-массива.
print(list_2d[:][1]) # Incorrect Output- [4, 5, 6] print(arr_2d[:,1]) # Correct Output -[ 2 5 8 11]
Преимущества использования 2d списка:
Мы не можем просто использовать 1d-список для каждой цели. Предположим, у нас есть данные о разных товарах, купленных разными клиентами, и мы хотим сохранить эти товары в списке.
Один из способов сделать это:
customer_1=["rice", "cumin seeds", "wheat"] customer_2=["detergent", "soap", "shampoo"] customer_3=["bread", "eggs", "salt"]
Но давайте предположим, что у нас есть 1000 клиентов или, может быть, больше, будет ли это правильным способом, чтобы сделать 1000 различных списков?
Но если мы используем 2d-массив для представления элементов, это будет намного лучше, чище и быстрее.
items=[ ["rice","cumin seeds","wheat"] , ["detergent","soap","shampoo"] , ["bread","eggs","salt"] ]
Кроме того, было бы очень легко получить значения из списка. Мы научимся извлекать значения из 2d-списка в python.
Как применить некоторые распространенные методы к списку 2d python:
- append(): append () – довольно распространенная функция, используемая в списке. Он используется для добавления ценности в конце списка.
Если мы хотим добавить новый список в конце старого списка,
list_2d= [[1,2,3] ,[4,5,6],[7,8,9],[10,11,12]] list_2d.append([5,6,7]) print(list_2d)
ВЫХОД:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [5,6,7,]]
Если мы хотим добавить элемент в последний подсписок:
print(list_2d[0].append(5))
Выход-
[[1, 2, 3 ,5], [4, 5, 6], [7, 8, 9], [10, 11, 12], [5,6,7,]]
- sort(): Если мы хотим расположить их в порядке возрастания или убывания, мы используем sort().
Теперь давайте посмотрим, что произойдет, когда мы применим href=”https://en.wikipedia.org/wiki/Sorting_algorithm”>sort() в 2d-списке. href=”https://en.wikipedia.org/wiki/Sorting_algorithm”>sort() в 2d-списке.
list_2d=[[7, 8, 9],[ 11,10, 12], [4, 5, 6], [1, 2, 3]] list_2d.sort() list_2d # By default it gives output in ascending order
ВЫХОД:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [11, 10, 12]]
Обратите внимание, что в выходных данных сортируется только список в целом, а не подсписок.
Если мы хотим отсортировать как подсписок, так и внешний список, мы можем использовать следующий код,
list_2d=[[7, 8, 9],[ 11,10, 12], [4, 5, 6], [1, 2, 3]] for i in range(len(list_2d)): list_2d[i].sort() #sorting the sublist list_2d.sort() print(list_2d)
ВЫХОД-
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
- Выравнивание 2d-списка: Когда мы преобразуем 2d-список в 1d-список, этот процесс называется выравниванием. В python так много методов и библиотек могут помочь нам в достижении цели, мы также можем сначала преобразовать 2d-список в 2d-массив, а затем применить flat() к массиву. Но поскольку мы находимся в стадии обучения, мы будем использовать наивный подход, чтобы достичь того же.
list_2d=[[7, 8, 9],[11,10, 12],[4, 5, 6],[1, 2, 3]] list1=[] for i in range(len(list_2d)): for j in range(len(list_2d[i])): list1.append(list_2d[i][j])
ВЫХОД-
[7, 8, 9, 11, 10, 12, 4, 5, 6, 1, 2, 3]
Надо Читать:
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Вывод
Python 2d list также имеет множество преимуществ и ограничений. Мы всегда должны знать, когда его использовать. Мы должны знать, когда использовать словари, массив NumPy, список python 1d.
Попробуйте запустить программы на вашей стороне и дайте мне знать, если у вас есть какие-либо вопросы.
Счастливого кодирования!