Как создать список с диапазоном чисел в Python

PythonBeginner
Практиковаться сейчас

Введение

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

Создание и понимание списков (lists) в Python

Списки (lists) в Python - это одна из наиболее часто используемых структур данных, которые позволяют хранить несколько элементов в одной переменной. Прежде чем мы приступим к созданию списков с диапазонами чисел, давайте разберем основы списков в Python.

Сначала создадим новый файл Python для работы. В WebIDE:

  1. Нажмите на меню "File" вверху окна.
  2. Выберите "New File".
  3. Назовите файл python_lists.py.
  4. Сохраните его в директории /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)

Запустим этот скрипт, чтобы увидеть вывод. В терминале:

  1. Убедитесь, что вы находитесь в директории /home/labex/project.
  2. Выполните следующую команду:
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():

  1. Нажмите на меню "File" вверху окна.
  2. Выберите "New File".
  3. Назовите файл range_lists.py.
  4. Сохраните его в директории /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() может быть использована тремя разными способами:

  1. range(stop): Генерирует числа от 0 до stop - 1.
  2. range(start, stop): Генерирует числа от start до stop - 1.
  3. range(start, stop, step): Генерирует числа от start до stop - 1 с шагом step.

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

  • Последовательные числа (по возрастанию).
  • Убывающие числа (по убыванию).
  • Четные числа.
  • Нечетные числа.
  • Числа с пользовательскими интервалами.

Помните, что сама функция range() возвращает объект range, который экономит память. Мы преобразуем его в список с помощью функции list(), чтобы сразу увидеть все значения или выполнить операции со списком.

Использование списковых включений (list comprehensions) с функцией range()

Python предоставляет мощную возможность, называемую списковыми включениями (list comprehensions), которая позволяет создавать списки в компактной и читаемой форме. В сочетании с функцией range() списковые включения предлагают элегантное решение для создания списков с определенными шаблонами.

Создадим новый файл Python, чтобы исследовать списковые включения:

  1. Нажмите на меню "File" вверху окна.
  2. Выберите "New File".
  3. Назовите файл list_comprehensions.py.
  4. Сохраните его в директории /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 для наших практических примеров:

  1. Нажмите на меню "File" вверху окна.
  2. Выберите "New File".
  3. Назовите файл range_applications.py.
  4. Сохраните его в директории /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. Сумма всех чисел от 1 до 100.
  2. Таблица умножения для числа 7.
  3. Список годов (5 прошлых и 5 будущих годов).
  4. Отсчет от 10 до 1.
  5. Факториал числа 5.
  6. Демонстрация того, как может работать игра "Угадай число".

Эти примеры показывают, как диапазоны, объединенные со списками, могут быть использованы для эффективного решения различных задач программирования. Некоторые важные преимущества использования списков с диапазонами в ваших программах включают:

  1. Упрощение кода для итерации по последовательности чисел.
  2. Эффективное использование памяти (объекты range не хранят все числа в памяти).
  3. Простое создание числовых шаблонов и последовательностей.
  4. Удобная интеграция с другими функциями Python, такими как sum(), min() и max().

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

Резюме

В этом практическом занятии (лабораторной работе) вы научились создавать и использовать списки с диапазонами чисел в Python. Вот краткое резюме того, что вы достигли:

  1. Вы изучили основы списков Python, включая создание, доступ к элементам и их изменение.
  2. Вы исследовали функцию range() и научились использовать ее для генерации последовательностей чисел.
  3. Вы узнали, как использовать списковые включения (list comprehensions) для создания более сложных списков на основе диапазонов.
  4. Вы применили эти техники для решения практических задач программирования.

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

По мере продолжения вашего пути в изучении Python вы обнаружите, что эти техники полезны во многих контекстах, включая анализ данных, веб - разработку, научные вычисления и многое другое. Комбинация списков и функции range() предоставляет прочную основу для работы с числовыми данными в Python.