Введение
Списки (lists) в Python - это универсальные структуры данных, которые могут хранить широкий спектр элементов, включая числа. В этом руководстве вы узнаете, как создать список с диапазоном чисел в Python, что может быть полезной техникой для различных программистских задач. Мы рассмотрим методы для генерации списков с последовательностями чисел и обсудим, как эффективно применять эти списки с диапазонами в своих Python-программах.
Создание и понимание списков (lists) в Python
Списки (lists) в Python - это одна из наиболее часто используемых структур данных, которые позволяют хранить несколько элементов в одной переменной. Прежде чем мы приступим к созданию списков с диапазонами чисел, давайте разберем основы списков в Python.
Сначала создадим новый файл Python для работы. В WebIDE:
- Нажмите на меню "File" вверху окна.
- Выберите "New File".
- Назовите файл
python_lists.py. - Сохраните его в директории
/home/labex/project.
Теперь напишем некоторый код, чтобы понять, как работают списки в Python:
## Basic list creation
numbers = [1, 2, 3, 4, 5]
print("Basic list:", numbers)
## Lists can contain different data types
mixed_list = [1, "hello", 3.14, True]
print("Mixed data types:", mixed_list)
## Accessing list elements (indexing starts at 0)
print("First element:", numbers[0])
print("Last element:", numbers[4])
## Getting the length of a list
print("List length:", len(numbers))
## Modifying list elements
numbers[2] = 30
print("Modified list:", numbers)
## Adding elements to a list
numbers.append(6)
print("After append:", numbers)
## Removing elements from a list
numbers.remove(30)
print("After remove:", numbers)
Запустим этот скрипт, чтобы увидеть вывод. В терминале:
- Убедитесь, что вы находитесь в директории
/home/labex/project. - Выполните следующую команду:
python3 python_lists.py
Вы должны увидеть следующий вывод:
Basic list: [1, 2, 3, 4, 5]
Mixed data types: [1, 'hello', 3.14, True]
First element: 1
Last element: 5
List length: 5
Modified list: [1, 2, 30, 4, 5]
After append: [1, 2, 30, 4, 5, 6]
After remove: [1, 2, 4, 5, 6]
Как вы можете видеть, списки в Python обладают несколькими важными характеристиками:
- Списки - это упорядоченные коллекции, то есть элементы имеют определенный порядок.
- Списки изменяемы (mutable), что позволяет изменять, добавлять или удалять элементы после создания.
- Списки могут содержать элементы разных типов данных.
- Каждый элемент в списке можно получить по его индексу (позиции).
Теперь, когда мы понимаем основы списков в Python, мы можем перейти к созданию списков с диапазонами чисел.
Создание списков с использованием функции range()
Функция range() в Python - это встроенная функция, которая генерирует последовательность чисел. Она часто используется вместе с функцией list() для создания списков, содержащих диапазоны чисел.
Создадим новый файл Python, чтобы исследовать функцию range():
- Нажмите на меню "File" вверху окна.
- Выберите "New File".
- Назовите файл
range_lists.py. - Сохраните его в директории
/home/labex/project.
Теперь добавим код, чтобы исследовать различные способы использования функции range():
## Basic usage of range() function
## Note: range() returns a range object, not a list directly
## We convert it to a list to see all values at once
## range(stop) - generates numbers from 0 to stop-1
numbers1 = list(range(5))
print("range(5):", numbers1)
## range(start, stop) - generates numbers from start to stop-1
numbers2 = list(range(2, 8))
print("range(2, 8):", numbers2)
## range(start, stop, step) - generates numbers from start to stop-1 with step
numbers3 = list(range(1, 10, 2))
print("range(1, 10, 2):", numbers3)
## Creating a list of descending numbers
numbers4 = list(range(10, 0, -1))
print("range(10, 0, -1):", numbers4)
## Creating even numbers from 2 to 10
even_numbers = list(range(2, 11, 2))
print("Even numbers:", even_numbers)
## Creating odd numbers from 1 to 9
odd_numbers = list(range(1, 10, 2))
print("Odd numbers:", odd_numbers)
Запустим этот скрипт, чтобы увидеть результаты:
python3 range_lists.py
Вы должны увидеть следующий вывод:
range(5): [0, 1, 2, 3, 4]
range(2, 8): [2, 3, 4, 5, 6, 7]
range(1, 10, 2): [1, 3, 5, 7, 9]
range(10, 0, -1): [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Even numbers: [2, 4, 6, 8, 10]
Odd numbers: [1, 3, 5, 7, 9]
Функция range() может быть использована тремя разными способами:
range(stop): Генерирует числа от 0 доstop - 1.range(start, stop): Генерирует числа отstartдоstop - 1.range(start, stop, step): Генерирует числа отstartдоstop - 1с шагомstep.
Понимая эти различные формы, вы можете создавать различные типы последовательностей чисел:
- Последовательные числа (по возрастанию).
- Убывающие числа (по убыванию).
- Четные числа.
- Нечетные числа.
- Числа с пользовательскими интервалами.
Помните, что сама функция range() возвращает объект range, который экономит память. Мы преобразуем его в список с помощью функции list(), чтобы сразу увидеть все значения или выполнить операции со списком.
Использование списковых включений (list comprehensions) с функцией range()
Python предоставляет мощную возможность, называемую списковыми включениями (list comprehensions), которая позволяет создавать списки в компактной и читаемой форме. В сочетании с функцией range() списковые включения предлагают элегантное решение для создания списков с определенными шаблонами.
Создадим новый файл Python, чтобы исследовать списковые включения:
- Нажмите на меню "File" вверху окна.
- Выберите "New File".
- Назовите файл
list_comprehensions.py. - Сохраните его в директории
/home/labex/project.
Теперь добавим код, чтобы понять, как списковые включения работают с диапазонами:
## Basic list comprehension with range
## Format: [expression for item in iterable]
squares = [x**2 for x in range(1, 6)]
print("Squares of numbers 1-5:", squares)
## List comprehension with condition
## Format: [expression for item in iterable if condition]
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print("Squares of even numbers 1-10:", even_squares)
## Creating a list of numbers divisible by 3
divisible_by_3 = [x for x in range(1, 31) if x % 3 == 0]
print("Numbers divisible by 3 (1-30):", divisible_by_3)
## Converting Celsius temperatures to Fahrenheit
celsius_temps = list(range(0, 101, 20))
fahrenheit_temps = [(c * 9/5) + 32 for c in celsius_temps]
print("Celsius temperatures:", celsius_temps)
print("Fahrenheit temperatures:", [round(f, 1) for f in fahrenheit_temps])
## Creating a list of tuples (number, square)
number_pairs = [(x, x**2) for x in range(1, 6)]
print("Numbers with their squares:")
for num, square in number_pairs:
print(f"Number: {num}, Square: {square}")
Запустим этот скрипт, чтобы увидеть результаты:
python3 list_comprehensions.py
Вы должны увидеть следующий вывод:
Squares of numbers 1-5: [1, 4, 9, 16, 25]
Squares of even numbers 1-10: [4, 16, 36, 64, 100]
Numbers divisible by 3 (1-30): [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Celsius temperatures: [0, 20, 40, 60, 80, 100]
Fahrenheit temperatures: [32.0, 68.0, 104.0, 140.0, 176.0, 212.0]
Numbers with their squares:
Number: 1, Square: 1
Number: 2, Square: 4
Number: 3, Square: 9
Number: 4, Square: 16
Number: 5, Square: 25
Списковые включения имеют компактный синтаксис, который позволяет создавать списки в одной строке кода. Общий синтаксис выглядит так:
[expression for item in iterable if condition]
Где:
expression- то, что вы хотите включить в новый список.item- каждый элемент из итерируемой последовательности.iterable- последовательность, по которой вы проитерируетесь (например,range()).if condition- необязательное условие, которое фильтрует, какие элементы будут включены в список.
Списковые включения более читаемы и часто более эффективны, чем создание списка с использованием традиционного цикла for с методом append(). Они особенно полезны в сочетании с функцией range() для создания числовых списков с определенными шаблонами или преобразованиями.
Практические применения списков с диапазонами
Теперь, когда мы научились создавать списки с использованием диапазонов, давайте рассмотрим некоторые практические применения. Эти примеры покажут, как списки с диапазонами могут быть использованы для решения общих задач программирования.
Создадим новый файл Python для наших практических примеров:
- Нажмите на меню "File" вверху окна.
- Выберите "New File".
- Назовите файл
range_applications.py. - Сохраните его в директории
/home/labex/project.
Теперь добавим код для нескольких практических применений:
## Example 1: Sum of numbers from 1 to 100
total = sum(range(1, 101))
print(f"Sum of numbers from 1 to 100: {total}")
## Example 2: Creating a multiplication table
def print_multiplication_table(n):
print(f"\nMultiplication table for {n}:")
for i in range(1, 11):
result = n * i
print(f"{n} × {i} = {result}")
print_multiplication_table(7)
## Example 3: Generating a calendar of years
current_year = 2023
years = list(range(current_year - 5, current_year + 6))
print(f"\nYears (5 past to 5 future): {years}")
## Example 4: Creating a countdown timer
def countdown(seconds):
print("\nCountdown:")
for i in range(seconds, 0, -1):
print(i, end=" ")
print("Blast off!")
countdown(10)
## Example 5: Calculating factorial
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
num = 5
print(f"\nFactorial of {num}: {factorial(num)}")
## Example 6: Creating a simple number guessing game
import random
def number_guessing_game():
## Generate a random number between 1 and 100
secret_number = random.randint(1, 100)
attempts = list(range(1, 11)) ## Maximum 10 attempts
print("\nNumber Guessing Game")
print("I'm thinking of a number between 1 and 100.")
print("You have 10 attempts to guess it.")
for attempt in attempts:
## In a real game, we would get user input
## For demonstration, we'll just print the logic
print(f"\nAttempt {attempt}")
print(f"(If this were interactive, you would guess a number here)")
print(f"The secret number is: {secret_number}")
## Break after the first attempt for demonstration purposes
break
number_guessing_game()
Запустим этот скрипт, чтобы увидеть результаты:
python3 range_applications.py
Вы должны увидеть вывод, демонстрирующий каждое из практических применений:
- Сумма всех чисел от 1 до 100.
- Таблица умножения для числа 7.
- Список годов (5 прошлых и 5 будущих годов).
- Отсчет от 10 до 1.
- Факториал числа 5.
- Демонстрация того, как может работать игра "Угадай число".
Эти примеры показывают, как диапазоны, объединенные со списками, могут быть использованы для эффективного решения различных задач программирования. Некоторые важные преимущества использования списков с диапазонами в ваших программах включают:
- Упрощение кода для итерации по последовательности чисел.
- Эффективное использование памяти (объекты
rangeне хранят все числа в памяти). - Простое создание числовых шаблонов и последовательностей.
- Удобная интеграция с другими функциями Python, такими как
sum(),min()иmax().
Освоив создание и манипуляцию списками с диапазонами, вы сможете писать более компактный и эффективный код Python для широкого спектра приложений.
Резюме
В этом практическом занятии (лабораторной работе) вы научились создавать и использовать списки с диапазонами чисел в Python. Вот краткое резюме того, что вы достигли:
- Вы изучили основы списков Python, включая создание, доступ к элементам и их изменение.
- Вы исследовали функцию
range()и научились использовать ее для генерации последовательностей чисел. - Вы узнали, как использовать списковые включения (list comprehensions) для создания более сложных списков на основе диапазонов.
- Вы применили эти техники для решения практических задач программирования.
Эти навыки являются фундаментальными для многих задач программирования на Python, от простой обработки данных до более сложных алгоритмов. Возможность быстро генерировать и манипулировать последовательностями чисел - это мощный инструмент, который поможет вам писать более эффективный и результативный код на Python.
По мере продолжения вашего пути в изучении Python вы обнаружите, что эти техники полезны во многих контекстах, включая анализ данных, веб - разработку, научные вычисления и многое другое. Комбинация списков и функции range() предоставляет прочную основу для работы с числовыми данными в Python.



