Объясните пятую строку,у меня все работает ,но я просто пытаюсь точнее понять код
Объясните ,я буду рад и счастлив на всю жизнь)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))0
Ответы (3 шт):
- Внешние скобки там лишние
- Читайте про str.join
- Читайте про генераторные выражения
Всё, больше там ничего нет.
text=''.join(i for i in text if not i in c)
Эквивалентно коду
text='asdf'
c=(',','?','{')
ss=() #Промежуточная переменная
for i in text:
if not i in c:
ss+=(i,)# Добавить в кортеж, в оригинале это generator object
print(ss)
text=''.join(ss)
print(text)
('a',)
('a', 's')
('a', 's', 'd')
('a', 's', 'd', 'f')
asdf
Эта команда просто убирает из текста «запрещенные» символы, которые находятся в кортежи c.
Подробнее:
(... for i in text ...)Когда вы проходите через строку
text, вы постепенно получаете ее отдельные символы.(i for i in text ...)Вы хотите те же символы получить в генераторе списка...
(i for i in text if i not in c)... но только тогда, когда такой символ не находится в списке
c.
Таким образом, вы из строки в переменной text создали генератор отдельных символов этой строки, но не всех, а только тех, которые не находятся в списке «запрещенных» символов c.
Как теперь использовать этот генератор, чтобы обратно получили из его отдельных символов комплектную строку?
Для этого в Питоне метод .join() - он из вашего генератора создает строку, в которой будут находиться все символы, отделенные между собой тем, что стоит перед точкой в .join().
Но вы их не хотите отделять, что то же самое как между ними добавить пустую строку. Потому перед точкой вы используете пустую строку:
".join(i for i in text if i not in c)