Список — это тип данных в Python, который содержит последовательные элементы данных в упорядоченном или неупорядоченном порядке. Данные внутри списка могут быть похожими или разными. Обычно они используются для хранения связанных данных внутри них.

Списки похожи на массивы в других языках программирования. Без явного использования циклов списки сложно просматривать на других языках, но Python предоставляет функцию понимания списков, которая позволяет создавать список либо с нуля, либо другой список, используя короткий и лаконичный синтаксис. Мы можем использовать индексацию, циклы и условные выражения внутри него, чтобы получить точное значение.

Определение списка в Python

fruits=["Apple","Banana","Orange"]
numbers=[1,2,5,7,8]
characters=['a',"#",10]

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

Создание списка с использованием понимания списка

1. Создание с нуля

#Syntax
new_list = [expression for item in iterable if condition]
#Examples
numbers_to_10= [i for i in range(1,11)]
print(numbers_to_10) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums_to_10= [i for i in range(1,11) if i%2==0]
print(even_nums_to_10) # [2, 4, 6, 8, 10]
odd_nums_to_10= [i for i in range(1,11) if i%2!=0]
print(odd_nums_to_10) # [1, 3, 5, 7, 9]
squares = [x**2 for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]
squares_of_odd=[x**2 for x in range(1, 6) if x%2!=0]
print(squares_of_odd)  # [1, 9, 25]
cubes_of_even=[x**3 for x in range(1, 6) if x%2==0]
print(cubes_of_even)  # [8, 64]

Здесь мы создали новые списки, используя понимание списков, с нуля, перебирая тип данных range, изменяя возвращаемое значение и проверяя необходимые условия.

2. Создание из других списков

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

Здесь мы использовали условные выражения для фильтрации элементов из предопределенного списка и использования удовлетворенных значений для создания нового списка. В этом случае условие `x % 2 == 0` проверяет, делится ли каждое число `x` в списке `numbers` на 2. Только четные числа удовлетворяют этому условию и включаются в результирующий список.

3. Создание вложенных списков

matrix = [[x for x in range(1, 4)] for _ in range(3)]
print(matrix)  # Output: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

В этом примере понимание внешнего списка `[x for x in range(1, 4)]` создает список `[1, 2, 3]`. Понимание внутреннего списка выполняется три раза в результате итерации `range(3)`, в результате чего получается двумерная матрица с тремя строками.

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_list = [x for sublist in nested_list for x in sublist]
print(flattened_list)  # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

В этом примере понимание внешнего списка перебирает каждый подсписок в `nested_list`, тогда как понимание внутреннего списка перебирает каждый элемент `x` в подсписке. Результирующий список содержит все элементы из вложенных списков. Это сводит вложенный список в один список.

n = 5
multiplication_table = [[i * j for j in range(1, n+1)] for i in range(1, n+1)]
for row in multiplication_table:
    print(row)
# Output:
# [1, 2, 3, 4, 5]
# [2, 4, 6, 8, 10]
# [3, 6, 9, 12, 15]
# [4, 8, 12, 16, 20]
# [5, 10, 15, 20, 25]

В этом примере понимание внешнего списка перебирает диапазон чисел от 1 до `n`, представляющий строки таблицы умножения. Внутреннее понимание списка выполняет итерацию по одному и тому же диапазону, представляя столбцы. Произведение индекса каждой строки и столбца рассчитывается для создания таблицы умножения.

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

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: