Формирование проблемы: замена одного элемента
Дано
- Список
лишенство - Элемент
Икс - Индекс
я
Как заменить элемент на индекс Я В списке lst С новым элементом х ?
Индексация решения
Вы используете Простая индексация Использование квадратной нотации кронштейна lst [я] Чтобы заменить элемент на индекс Я в списке lst С новым элементом х Отказ
>>> lst = ['Alice', 'Bob', 'Carl', 'Dave'] >>> x = 'Chris' >>> i = 2 >>> lst[i] = x >>> lst ['Alice', 'Bob', 'Chris', 'Dave']
Но что, если вы хотите заменить несколько элементов по нескольким показателям?
Формирование проблемы: замена нескольких элементов
Дано
- Список
лишенство - Элементы
[x_0, x_1, ..., x_n] - Индексы
[I_0, I_1, ..., I_N]
Как заменить элементы по индексам I_0, I_1, ..., I_N В Список lst С новыми элементами x_0, x_1, ..., x_n в этой последовательности?
Метод 1: для цикла
Вы можете использовать Диапазон () Функция, чтобы получить пару индекса I-TH и I-й заменой значения в для петли Отказ Тогда ты заменить Все элементы одностороннее.
lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]
# Method 1: For Loop
for i in range(len(indices)):
lst[indices[i]] = repl[i]
print(lst)
# ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']
Способ 2: ZIP () и для цикла
Более питоновый подход состоит в том, чтобы застегивать индексы и значения замены, а затем просто итерацию над ними в парах с использованием нескольких заданий.
lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]
# Method 2: zip() and for loop
for index, replacement in zip(indices, repl):
lst[index] = replacement
print(lst)
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']Метод 3: Numpy + Назначение среза
Стоять на плечах гигантов! Вы можете использовать мощную расширенную функциональность «Numpy», чтобы передать список индексов, которые должны быть заменены в схеме индексации, и заменяют все элементы справа от операции назначения.
lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George'] repl = ['None', 'Foo', 'Bar'] indices = [0, 2, 5] # Method 3: NumPy + Slice Assignment import numpy as np lst = np.array(lst) lst[indices] = repl print(lst) # ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
Метод 4: Python One-Liner Solution
Я люблю Python One-listers (Вот почему я написал книга о них ). Можем ли мы решить множественную задачу замены в одной строке? Да, конечно!
lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George'] repl = ['None', 'Foo', 'Bar'] indices = [0, 2, 5] # Method 4: Python One-Liner lst = [repl[indices.index(i)] if i in indices else lst[i] for i in range(len(lst))] print(lst) # ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
- Мы используем Понимание списка
[... Для меня в ...]Чтобы повторить все индексы от 0 до Длина списка Отказ - Мы используем Тернарный оператор
... Если ... else ...Чтобы проверить, является ли этот индекс, который должен быть заменен. - Если индекс не должен быть заменен, верните исходный элемент, иначе верните замену элемента.
- Мы используем
list.index ()Способ выяснить индекс элемента для замены элемента исходного списка.
Не очень красиво, не так ли? Если вы все еще хотите узнать, как работают одноклассники, ознакомьтесь с моей книгой:
Python One-Liners Книга
Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.
Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.
Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:
• Используйте структуры данных для решения реальных проблем, такие как использование булевой индексации для поиска городов с загрязнением выше среднего • Используйте Numpy Basics, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика • Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения • Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы • Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку
К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.
Получите свой Python One-Liners сейчас !!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.