- Взять определенный элемент из списка в списке
- 3 ответа 3
- Похожие
- Подписаться на ленту
- Массивы в Python
- Модуль массива Python
- 1. Создание массива
- 2. Вывод
- 3. Печать элементов массива
- 4. Вставка и добавление элементов
- 5. Массив поддерживает отрицательный индекс
- 6. Удаление элементов
- 7. Нарезка
- 8. Поиск элемента
- 9. Обновление значения по указанному индексу
- 10. Перевернуть элементы в обратном порядке
- 11. Подсчет количества элементов
- 12. Расширение путем добавления объекта Iterable
- 13. Преобразование массива в список
Взять определенный элемент из списка в списке
Выдаст: [13223, 56, 48996] Нужно: [20, 56, 684] То есть, выбрать первый элемент из всех списков максимально быстрым способом. И как это можно реализовать для numpy array?
3 ответа 3
a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]] list(zip(*a))[1] # (20, 56, 684)
если вложенные списки могут быть разной длины, то вместо zip берем zip_longest из библиотеки itertools
Я не эксперт, умею только костыльные решения делать, поэтому такой и предлагаю:
a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]] n = 0 for i in range(3): print(a[n][1]) n = n + 1
List comprehensions вам поможет
def take_items_by_index(list_, index_): return [i[index_] for i in list_]
a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]] take_items_by_index(a, 0) # OUT # [10, 13223, 156] take_items_by_index(a, 1) # OUT # [20, 56, 684] take_items_by_index(a, 2) # OUT # [30, 48996, 9686]
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.27.43548
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Массивы в Python
Python не имеет явной структуры данных массива. Список содержит набор элементов и поддерживает операции добавления / обновления / удаления / поиска. Вот почему в Python не так часто используется отдельная структура данных для поддержки массивов.
Массив содержит элементы одного типа, но список Python допускает элементы разных типов. Это единственное различие между массивом и списком. Но это не нарушает условий и не требует поддержки новой структуры данных.
Однако модуль массива можно использовать для создания массива, подобного объекту, для целочисленных символов, символов с плавающей запятой и символов Юникода.
Модуль массива Python
Модуль массива Python позволяет нам создавать массив с ограничением типов данных. Этот модуль поддерживает только несколько типов данных.
Код типа Unicode устарел в Python 3.3 и будет удален в версии Python 4.0.
Итак, мы можем создать массив целых чисел и чисел с плавающей запятой, используя модуль массива.
1. Создание массива
Синтаксис для создания массива: array.array(typecode, values_list) .
import array # creating array int_array = array.array('i', [1, 2, 3, 4]) float_array = array.array('f', [1.1, 2.2, 3.3, 4.4]) # unicode array support is deprecated and will be deleted in Python 4 unicode_array = array.array('u', ['\u0394', '\u2167', '\u007B'])
2. Вывод
Если мы печатаем объект массива, он дает нам информацию о коде типа и его элементах. Давайте распечатаем созданные выше массивы, а также распечатаем тип объекта с помощью встроенной функции type().
# printing array print(int_array) print(float_array) print(unicode_array) print(type(int_array))
array(‘i’, [1, 2, 3, 4]) array(‘f’, [1.100000023841858, 2.200000047683716, 3.299999952316284, 4.400000095367432]) array(‘u’, ‘ΔⅧ
3. Печать элементов массива
Мы можем печатать элементы массива с помощью цикла for.
import array int_array = array.array('i', [1, 2, 3, 4]) for a in int_array: print(a)
Мы также можем получить доступ к элементу, используя его индекс. Мы можем использовать индексы для печати элементов массива.
for b in range(0, len(int_array)): print(f'int_array[] = ')
int_array[0] = 1 int_array[1] = 2 int_array[2] = 3 int_array[3] = 4
4. Вставка и добавление элементов
Мы можем использовать функцию insert() для вставки элемента по указанному индексу. Элементы из указанного индекса сдвигаются вправо на одну позицию.
int_array = array.array('i', [1, 2, 3, 4]) int_array.insert(0, -1) # -1,1,2,3,4 int_array.insert(2, -2) # -1,1,-2,2,3,4 print(int_array)
Если вам нужно добавить элемент в конец массива, используйте функцию append().
int_array = array.array('i', [1, 2, 3, 4]) int_array.append(-3) print(int_array) # array('i', [1, 2, 3, 4, -3])
5. Массив поддерживает отрицательный индекс
Мы также можем получить доступ к элементам массива python через отрицательный индекс.
int_array = array.array('i', [10, 20, 30, 40, 50, 60, 70, 80]) print(int_array[-2]) # 70 print(int_array[-5]) # 40
6. Удаление элементов
Мы можем использовать метод remove() для удаления элемента массива.
int_array = array.array('i', [1, 2, 3, 4]) int_array.remove(2) print(int_array) # array('i', [1, 3, 4])
Если элемент отсутствует в массиве, возникает ошибка ValueError.
int_array = array.array('i', [1, 2, 3, 4]) try: int_array.remove(20) except ValueError as ve: print(ve)
Вывод: array.remove(x): x not in array
Мы также можем использовать функцию pop() для удаления элемента по данному индексу. Эта функция возвращает элемент, удаляемый из массива. Если мы не указываем индекс, последний элемент удаляется и возвращается.
int_array = array.array('i', [1, 2, 3, 4]) last_element = int_array.pop() print(last_element) # 4 print(int_array) # array('i', [1, 2, 3]) second_element = int_array.pop(1) print(second_element) # 2 print(int_array) # array('i', [1, 3])
7. Нарезка
Массив Python поддерживает нарезку и возвращает новый массив с подэлементами. Исходный массив остается без изменений. Нарезка также поддерживает отрицательные индексы.
int_array = array.array('i', [0, 1, 2, 3, 4, 5]) print(int_array[3:]) # array('i', [3, 4, 5]) print(int_array[:2]) # array('i', [0, 1]) print(int_array[1:3]) # array('i', [1, 2]) # negative index slicing print(int_array[-2:]) # array('i', [4, 5]) print(int_array[:-2]) # array('i', [0, 1, 2, 3])
8. Поиск элемента
Мы можем использовать функцию index(), чтобы найти индекс первого вхождения элемента. Если элемент отсутствует в массиве, возникает ошибка ValueError.
int_array = array.array('i', [0, 1, 2, 3, 1, 2]) print(f'1 is found at index ') try: print(int_array.index(20)) except ValueError as ve: print(ve)
1 is found at index 1 array.index(x): x not in array
9. Обновление значения по указанному индексу
Мы можем использовать индекс массива с оператором присваивания для обновления значения индекса. Если индекс недействителен, возникает IndexError.
int_array = array.array('i', [0, 1, 2, 3, 1, 2]) int_array[0] = -1 int_array[1] = -2 print(int_array) try: int_array[10] = -10 except IndexError as ie: print(ie)
array('i', [-1, -2, 2, 3, 1, 2]) array assignment index out of range
10. Перевернуть элементы в обратном порядке
Мы можем использовать функцию reverse(), чтобы перевернуть элементы массива.
int_array = array.array('i', [0, 1, 2, 3]) int_array.reverse() print(int_array) # array('i', [3, 2, 1, 0])
11. Подсчет количества элементов
Мы можем использовать функцию count(), чтобы получить количество вхождений значения в массив.
int_array = array.array('i', [0, 1, 1, 0]) print(int_array.count(1)) # 2 print(int_array.count(10)) # 0
12. Расширение путем добавления объекта Iterable
Мы можем использовать функцию extend() для добавления значений из итерируемого объекта в конец массива.
array1 = array.array('i', [0, 1]) array2 = array.array('i', [2, 3, 4]) array1.extend(array2) print(array1) # array('i', [0, 1, 2, 3, 4]) print(array2) # array('i', [2, 3, 4]) array2.extend([1, 2]) print(array2) # array('i', [2, 3, 4, 1, 2]) array1 = array.array('i', [1]) array1.extend(set([0,0,0,2])) print(array1) # array('i', [1, 0, 2])
13. Преобразование массива в список
Мы можем использовать функцию tolist() для преобразования массива в список.
int_array = array.array('i', [0, 1, 2, 3]) print(int_array.tolist()) # [0, 1, 2, 3]