LINUX.ORG.RU

строки в python

 ,


0

1

Можно ли выполнить замену в строке txt, без цикла:

>>> txt="one one two three for two"
>>> d=['one','two']
>>> w=['1','2']
>>> for a,b in zip(d,w):
...     txt=txt.replace(a,b)
... 
>>> txt
'1 1 2 three for 2'
слова из списка d заменяются на слова из списка w.

P.S. не удачная попытка:

>>> txt="one one two three for two"
>>> [ txt.replace(a,b) for a,b in zip(d,w) ]
['1 1 two three for two', 'one one 2 three for 2']

P.S. не удачная попытка:

Карго-культ такой карго-культ.

Можно цикл заменить на reduce, можно воспользоваться регулярными выражениями, но зачем? Препод лабу не принимает?

aedeph_ ★★
()
Ответ на: комментарий от iiivanov314

генератор [] (по крайней мере тот, который осилил написать ты) в данном случае не работает. reduce должен работать так же как и цикл.

И да, два листа - это говнокод, для этого существуют дикты, что известно любому, кто хотя бы туториал для дебилов на официальном сайте прошёл.

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

ну, не все такие как ты «не дибил»: с рождения еще ходить не научился, а словарями и списками виртуозно пользовался ...

iiivanov314
() автор топика
Ответ на: комментарий от iiivanov314

Не с рождения, а когда пошёл и прочитал туториал.

aedeph_ ★★
()

из списка
без цикла

устроили_здесь_цирк.png

anonymous
()
Ответ на: комментарий от aedeph_

reduce же deprecated(перемещен в закрома) в 3й ветке. Гвидо говорил что рассово верно использовать генераторы и циклы.

z00ke
()
Ответ на: комментарий от z00ke

reduce же deprecated

4.2

Гвидо говорил

Вертел я то, что Гвидо говорил, особенно с учётом той аргументации, которую он при этом применял.

aedeph_ ★★
()
Ответ на: комментарий от iiivanov314

Так вы ходить не научились? Соболезную. Почему бы вам действительно не пройти туториал/прочитать книгу о пайтоне? Писать программы на язык не выучив его, это не best practices, мягко говоря...

И ещё вопрос, где-то дают лабы на пайтоне? Круто же.

Weres ★★★
()
Ответ на: комментарий от aedeph_

Я за понятный код, reduce читается сложно, а цикл же наоборот. Алсо, на python достаточно тяжело писать все в фунциональном стиле.

z00ke
()
Ответ на: комментарий от z00ke

Расскажи пожалуйста что-нибудь ещё о себе.

reduce читается сложно, а цикл же наоборот

Почему, например, не пишешь на фортране?

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

Почему, например, не пишешь на фортране?

Так я и не про себя говорил, а про людей, которые твой код будут читать. Ладно программист мамкин, не мне тебя учить как писать. Я же просто свое мнение высказал.

Расскажи пожалуйста что-нибудь ещё о себе.

Ну, в целом я няша, можешь мне в жабир написать, пообщаемся там :3

z00ke
()
Ответ на: комментарий от aedeph_

Давай лучше о тебе поговорим. Борщ любишь?

Deleted
()
Ответ на: комментарий от true_admin

Сразу после того, как ты осилишь прочитать, что делает str.translate.

Никаких непонятных формул с нормами функциональных пространств у тебя есть все шансы понять, где ты облажался.

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)

без цикла

Ну, если _очень_ хочешь: [ globals().__setitem__('txt', txt.replace(a,b)) for a,b in zip(d,w) ].

anonymous
()
Ответ на: комментарий от aedeph_

А теперь без месива:

text = 'asd eat qwe'
replaces = {
    'asd': 'cat',
    'qwe': 'dog'}
reduce(lambda memo, (x, y): memo.replace(x, y), replaces.items(), text)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.