Вывести каждый второй элемент массива питон

Python Массивы

Примечание: На этой странице показано, как использовать СПИСКИ в качестве МАССИВОВ, однако для работы с массивами в Python вам придется импортировать библиотеку, например NumPy..

Массивы используются для хранения нескольких значений в одной переменной:

Пример

Создайте массив, содержащий названия автомобилей:

Что такое массив?

Массив — это специальная переменная, которая может содержать более одного значения одновременно.

Если у вас есть список элементов (например, список названий автомобилей), хранение автомобилей в отдельных переменных может выглядеть так:

Однако что, если вы хотите перебрать все машины и найти конкретную? А если бы у вас было не 3 машины, а 300?

Решение представляет собой массив!

Массив может содержать множество значений под одним именем, и вы можете получить доступ к значениям, обратившись к порядковому номеру.

Доступ к элементам массива

Вы обращаетесь к элементу массива, обращаясь к номеру индекса.

Пример

Получить значение первого элемента массива:

Пример

Измените значение первого элемента массива:

Длина массива

Используйте метод len() чтобы вернуть длину массива (количество элементов в массиве).

Пример

Вернуть количество элементов в массиве cars:

Примечание: Длина массива всегда на единицу больше, чем самый высокий индекс массива.

Цикл элементов массива

Вы можете использовать цикл for in для перебора всех элементов массива.

Пример

Выведите каждый элемент массива cars:

Добавление элементов массива

Вы можете использовать метод append() для добавления элемента в массив.

Пример

Добавьте еще один элемент в массив cars:

Удаление элементов массива

Вы можете использовать метод pop() для удаления элемента из массива.

Пример

Удалите второй элемент массива cars:

Вы также можете использовать метод remove() для удаления элемента из массива.

Пример

Удалите элемент, который имеет значение «Volvo»:

Примечание: Метод remove() удаляет только первое вхождение указанного значения.

Методы массива

В Python есть набор встроенных методов, которые вы можете использовать для списков/массивов.

Метод Описание
append() Добавляет элемент в конец списка
clear() Удаляет все элементы из списка
copy() Возвращает копию списка
count() Возвращает количество элементов с указанным значением
extend() Добавить элементы списка (или любого итерируемого) в конец текущего списка
index() Возвращает индекс первого элемента с указанным значением
insert() Добавляет элемент в указанную позицию
pop() Удаляет элемент в указанной позиции
remove() Удаляет первый элемент с указанным значением
reverse() меняет порядок списка на обратный
sort() Сортирует список

Примечание: Python не имеет встроенной поддержки массивов, но вместо этого можно использовать списки Python.

Источник

Как напечатать каждый второй элемент в списке, полном строк? питон

У меня есть список чисел, как это (сохраненный в файле.txt):

list_of_numbers = [ ('5', 2.5, 5200), ('6', 3.2, 5236), ('8', 5.4, 5287), ('6', 8.7, 2563) ] 

И я импортировал этот список (список — файл.txt) так:

list_of_numbers = open("list_of_numbers.txt").read().strip().split() 

но теперь я хочу, чтобы python выводил мне каждый второй элемент в каждой строке.. Я попробовал это:

p = x[1] for x in list_of_numbers print(p) 

но это не правильно.. И я хочу, чтобы питон напечатал меня так:

2 ответа

Вы пропустили скобки. Попробуй это:

p = [x[1] for x in list_of_numbers] 

Чтобы напечатать значения, вы можете использовать

print(', '.join([str(x) for x in p])) 

Вам также нужно изменить способ загрузки данных из файла

def parse(raw): data = [] for line in raw.split("\n"): line = line.strip() # --> "('5', 2.5, 5200)" if line.startswith("(") and line.endswith(")"): d = line[line.index("(")+1 : line.index(")", -1)] # --> "'5', 2.5, 5200" d = d.split(",") data.append([]) for i in d: i = i.strip() try: i = float(i) except: pass data[-1].append(i) return data raw = open("list_of_numbers.txt").read() list_of_numbers = parse(raw) p = [x[1] for x in list_of_numbers] # --> [2.5, 3.2, 5.4, 8.7] print(', '.join([str(x) for x in p])) # ---> 2.5, 3.2, 5.4, 8.7 

Я предлагаю использовать рассол. Хранить и загружать ваши данные легко, как:

import pickle data = . # store file = open('data.txt', 'w') pickle.dump(data, file) file.close() # load file = open('data.txt', 'r') data = pickle.load(file) file.close() 

Другой вариант заключается в использовании numpy.ndarray ,

import numpy as np list_of_numbers = [ ('5', 2.5, 5200), ('6', 3.2, 5236), ('8', 5.4, 5287), ] list_of_numbers = np.array(list_of_numbers) p = list_of_numbers[:,1] print(p) # outputs: ['2.5' '3.2' '5.4'] 

Кроме того, поскольку вы читаете данные из текстового файла, ваш первый список должен содержать только str , (Я действительно не понимаю, как вы получаете смешанные строки и числа, используя метод, который вы описали в своем вопросе.) Чтобы это исправить, вы можете либо:

  • использование numpy.loadtxt ,
  • преобразовать в float при переключении на ndarray: `np.array(list_of_numbers, dtype=float).

Наконец, я настоятельно рекомендую вам узнать о срезах в Python.

Источник

КАК ВЫВЕСТИ КАЖДЫЙ ВТОРОЙ ЭЛЕМЕНТ СПИСКА PYTHON

В Python для вывода каждого второго элемента списка можно использовать срезы (slicing). В срезах используются три параметра: начало среза, конец среза и шаг. Шаг — третий параметр — указывает, сколько элементов списка нужно пропустить перед взятием следующего элемента. Чтобы вывести каждый второй элемент списка, нужно указать шаг 2:

my_list = [1, 2, 3, 4, 5, 6]second_elements = my_list[1::2]print(second_elements)

В этом коде создается список my_list, затем с помощью среза создается новый список second_elements, содержащий каждый второй элемент из my_list. Далее этот список выводится на экран с помощью функции print().

Можно также использовать цикл for для вывода каждого второго элемента списка:

my_list = [1, 2, 3, 4, 5, 6]for i in range(1, len(my_list), 2): print(my_list[i])

В этом коде используется цикл for, который перебирает элементы списка от второго до последнего с шагом 2 и выводит каждый второй элемент списка на экран.

Пересечение списков. Совпадающие элементы двух списков. Решение задачи на Python.

Удаление элементов списка по условию. Решение задачи на Python

Python l удаление элемента из списка

Арбитраж криптовалюты — Актуальная p2p связка на 13% — Подробный разбор — Binance P2P — ИЮНЬ 2023

Проверка уникальности элементов списка. Язык программирования Python

29 Вложенные списки Python

5 способов поиска элемента в списке python (питон)

Как объединить два отсортированных списка на Python: задача LeetCode.


12 Списки и операции над ними Python

  • Cannot assign to operator python что значит
  • Метод splitlines python
  • Opencv в python часть 2
  • Даны катеты прямоугольного треугольника найти его периметр python
  • Python парсинг selenium
  • Python тип аргумента функции
  • Псевдонимы в python
  • Как на хостинге запустить скрипт python
  • Предварительная подготовка данных в python
  • Пузырьком сортировка python
  • Python шифр хилла
  • Обфускация python online
  • Какой параметр обязательно принимает в себя метод экземпляра класса python

Источник

Python: взять каждый первый, второй, третий элемент в подсписке

Я хотел бы создать 1-й список, где элементы упорядочены по позиции в подсписке, а затем по порядку подсписка. Таким образом, правильный вывод для приведенного выше списка:

def reorder_and_flatten(my_list): my_list = [item for sublist in my_list for item in sublist] result_nums = [] for i in range(len(my_list)): result_nums.extend(my_list[i::3]) return result_nums result = reorder_and_flatten(my_list) 

Это сглаживает мой 2-й список и дает мне:

[1, 4, 7, 2, 5, 8, 3, 6, 9, 4, 7, 5, 8, 6, 9, 7, 8, 9] 

Первая половина этого списка верна, а вторая нет.

Я также хотел бы, чтобы моя функция могла обрабатывать только 2 подсписка. Например, если дано:

4 ответа

Вы пытаетесь сгладить, а затем переупорядочить, что делает вещи намного сложнее, чем переупорядочение, а затем сглаживание.

Во-первых, для вашей первоначальной проблемы это просто «распаковать», как описано в документации для zip :

>>> my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> list(zip(*my_list)) . [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

(В Python 2.7 вы могли бы просто написать zip(…) здесь вместо list(zip(…)) , но в этом случае одна и та же демонстрация работает одинаково в 2.x и 3.x.)

И потом, вы уже знаете, как сгладить это:

>>> [item for sublist in zip(*my_list) for item in sublist] [1, 4, 7, 2, 5, 8, 3, 6, 9] 

Но все становится немного сложнее для вашего второго случая, когда некоторые списки могут быть пустыми (или, может быть, просто короче?).

Там нет функции, которая как zip но пропускает пропущенные значения. Вы можете написать один довольно легко. Но вместо этого. есть функция, которая как zip но заполняет пропущенные значения с None (или что-то еще, что вы предпочитаете), izip_longest , Итак, мы можем просто использовать это, а затем отфильтровать None значения, как мы сглаживаем:

>>> my_list = [[1, 2, 3], [], [7, 8, 9]] >>> from itertools import izip_longest >>> list(izip_longest(*my_list)) [(1, None, 7), (2, None, 8), (3, None, 9)] >>> [item for sublist in izip_longest(*my_list) for item in sublist if item is not None] [1, 7, 2, 8, 3, 9] 

(В Python 3 функция izip_longest переименован zip_longest .)

Стоит отметить, что roundrobin Рецепт, как указано в ответе ShadowRanger, является еще более хорошим решением этой проблемы, и его еще проще использовать (просто скопируйте и вставьте его из документации, или pip install more_itertools и использовать его оттуда). Это немного сложнее понять, но стоит потратить время, чтобы понять это (и попросить помощи, если вы застряли).

result = [l[i] for i in range(max(len(v) for v in my_list)) for l in my_list if l] 
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] [l[i] for i in range(max(len(v) for v in my_list)) for l in my_list if l] # => [1, 4, 7, 2, 5, 8, 3, 6, 9] my_list = [[1, 2, 3], [], [7, 8, 9]] [l[i] for i in range(max(len(v) for v in my_list)) for l in my_list if l] # => [1, 7, 2, 8, 3, 9] 

Если вы счастливы использовать стороннюю библиотеку, вы можете использовать NumPy и np.ndarray.ravel :

import numpy as np A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) res_a = A.ravel('F') # array([1, 4, 7, 2, 5, 8, 3, 6, 9]) 

Для случая, когда у вас есть один или несколько пустых списков, вы можете использовать filter удалить пустые списки:

B = np.array(list(filter(None, [[1, 2, 3], [], [7, 8, 9]]))) res_b = B.ravel('F') # array([1, 7, 2, 8, 3, 9]) 

Оба решения требуют, чтобы непустые подсписки содержали одинаковое количество элементов. Если преобразование списка необходимо, вы можете использовать, например, res_a.tolist() ,

Хотя эти методы «черного ящика» многому вас не научат, они будут быстрее для больших массивов, чем list операции. Смотрите также Каковы преимущества NumPy перед обычными списками Python?

itertools раздел рецептов модуля обеспечивает roundrobin рецепт, который будет делать именно то, что вы хотите. Он производит генератор, но ваше ожидаемое поведение будет видно с помощью:

# define roundrobin recipe here from itertools import cycle, islice def roundrobin(*iterables): "roundrobin('ABC', 'D', 'EF') --> A D E B F C" # Recipe credited to George Sakkis pending = len(iterables) nexts = cycle(iter(it).next for it in iterables) while pending: try: for next in nexts: yield next() except StopIteration: pending -= 1 nexts = cycle(islice(nexts, pending)) def reorder_and_flatten(my_list): return list(roundrobin(*my_list)) 

Основная проблема вашего исходного кода в том, что он зациклен на for i in range(len(my_list)): , расширяясь с my_list[i::3] , Проблема в том, что это приводит к дублированию элементов с индекса 3 и далее (индекс 3 уже был выбран в качестве второго элемента среза индекса 0). Здесь много других небольших логических ошибок, поэтому намного проще использовать рецепт.

Это будет довольно производительным и обобщать лучше, чем большинство решений, свернутых вручную (оно будет правильно округлять робин, даже если подсписки имеют неравномерную длину, и не требует фильтрации второго прохода или какой-либо специальной обработки, чтобы None как значение как zip_longest делает).

Источник

Читайте также:  Java самому как изучить
Оцените статью