Рубрики
Без рубрики

Диапазон списка Python Join: полезное руководство

Если поисковая фраза «Python join Change Range» привела вас сюда, вы, скорее всего, одна из следующих проблем: вы не знаете, как объединить два диапазона (), которые вы хотите использовать .joouin () для создания Строка из диапазона (), которая не работает — но не работает. В любом случае, читая эту статью, я надеюсь, что … Python Join And List Range: полезное руководство Подробнее »

Автор оригинала: Chris.

Если поисковая фраза «Диапазон списка Python Join» Привел вас сюда, вы, скорее всего, одна из следующих проблем:

  1. Вы не знаете, как ConcateNate Два Диапазон () ИТЕРАЛЫ ИЛИ.
  2. Вы хотите использовать .join () создать строку из Диапазон () Это не работает.

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

Но давайте сначала поиграем с некоторым кодом и получите обзор двух решений, пожалуйста, мы?

Упражнение : Можете ли вы достичь обеих целей в одной строке кода Python?

ConcateNate два диапазона () имитал

Проблема Как создать новый список путем объединения двух Диапазон () Поttileables?

Пример : Вы хотите объединить следующие два Диапазон () показывать

range(1,5) + range(5,10)

Ваш ожидаемый результат:

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

Разработка решения : Результат Диапазон (запуск, остановка, шаг) Функция – это объект «диапазона»:

>>> range(10)
range(0, 10)
>>> type(range(10))

К сожалению, вы не можете просто объединить два объекта диапазона, потому что это вызвало бы Типеррор – оператор + не определен на двух объектах диапазона:

>>> range(1, 5) + range(5, 10)
Traceback (most recent call last):
  File "", line 1, in 
    range(1, 5) + range(5, 10)
TypeError: unsupported operand type(s) for +: 'range' and 'range'

Таким образом, самый простой способ объединить два объекта диапазона состоит в том, чтобы сделать следующее.

  • Конвертировать оба объекта диапазона в списки, используя Список (диапазон (...)) Функция звонков.
  • Используйте Список конкатенации Оператор + на полученные объекты.
l = list(range(1, 5)) + list(range(5, 10))
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

Есть и другие способы Списки ConsateNate – И более эффективный – использовать Itertools.Chain () функция.

from itertools import chain
l = chain(range(1, 5), range(5, 10))
print(list(l))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

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

Вы можете увидеть, как первая версия создает несколько объектов списка в памяти в интерактивном визуализации памяти:

Упражнение : Сколько объектов списка в памяти после окончания кода?

Использовать .join (), чтобы создать строку из диапазона ()

Проблема : Учитывая объект диапазона, который является намерением для целых чисел – как присоединиться к всем целым числам в новую строковую переменную?

Пример : У вас есть следующий объект диапазона:

range(10)

Вы хотите следующую строку:

'0123456789'

Решение : Чтобы преобразовать объект диапазона в строку, используйте String.join () метод и пройти выражение генератора str (x) для x в диапазоне (...) Чтобы сначала преобразовать каждое целое число в строковое значение. Это необходимо, поскольку функция объединения ожидает, что у нее выясняется, а не целые числа. Если вы пропустите этот второй шаг, Python бросит Типеррор :

print(''.join(range(10)))
'''
Traceback (most recent call last):
  File "C:\Users\xcent\Desktop\code.py", line 2, in 
    print(''.join(range(10)))
TypeError: sequence item 0: expected str instance, int found
'''

Итак, правильный путь – это преобразовать каждый элемент в строку с помощью выражение генератора str (x) для x в диапазоне (...) внутри Присоединяйтесь к (...) Список аргументов. Вот правильный код, который объединяет все целыми числами в объекте диапазона в самом пиптоном пути:

print(''.join(str(x) for x in range(10)))
'0123456789'

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

print('-'.join(str(x) for x in range(10)))
'0-1-2-3-4-5-6-7-8-9'

Статьи по Теме:

  • Списки Python [Ultimate Guide]
  • Python Присоединяйтесь к [Ultimate Guide]
  • Выражения генератора Python и понимание списка

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

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

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

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

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.