Формирование проблемы: замена одного элемента
Дано
- Список
лишенство
- Элемент
Икс
- Индекс
я
Как заменить элемент на индекс Я
В списке 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.