Задание с онлайн-курса

Gmftd

Новичок
Пользователь
Дек 10, 2022
1
0
1
Надо вывести в список j те элементы списка a, которые не имеют четных цифр. Выдает такой ответ. Помогите пожалуйста с заданием
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Надо вывести в список j те элементы списка a, которые не имеют четных цифр. Выдает такой ответ. Помогите пожалуйста с заданием
наверно так
Python:
a = ['1234', '54234', '537', '319']
j = []

for i in a:
    flag = False
    for ii in i:
        if int(ii) % 2 == 0:
            flag = True
            break
    if not flag:
        j.append(i)

print(j)
 
  • Мне нравится
Реакции: Malenkey

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
На случай, если хочешь перед преподом выежиться)0))
Python:
a = ['1234', '54234', '537', '319']
j = [i for i in a if all([(lambda x: int(x) & 1)(j) for j in i])]
print(j)
 
  • Мне нравится
Реакции: Malenkey

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Выдает такой ответ
И где ответ? С чем помочь? :unsure:
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
а вот не хочу я помогать:D
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
а вот не хочу я помогать
Так тут и захочешь если, то не сможешь! :LOL:
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
наверно так
Python:
a = ['1234', '54234', '537', '319']
j = []

for i in a:
    flag = False
    for ii in i:
        if int(ii) % 2 == 0:
            flag = True
            break
    if not flag:
        j.append(i)

print(j)
(y)
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
На случай, если хочешь перед преподом выежиться)0))
Python:
a = ['1234', '54234', '537', '319']
j = [i for i in a if all([(lambda x: int(x) & 1)(j) for j in i])]
print(j)
Бр-р-р-р-р! Ни-и-и-и-ич-ч-ч-чо не понимаю!
eecb514e914bf02071c0182977d2c35d.jpg
Друг, а можешь все это пояснить? По-братски, друг! Пожалуйста! Особенно вот эту часть "[(lambda x: int(x) & 1)(j) for j in i])]" Что дает побитовое "И"? Как элементы добавляются в список?
 
  • Ха-ха!
Реакции: 4olshoy_blen

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Что дает побитовое "И"? Как элементы добавляются в список?
лямбда-функция проверяет является ли цифра четной. Проверить на четность/нечетность можно не только с x % 2 == 0, но с побитовым И. Кстати, на форуме по кликерманну тоже есть статья, описывающая побитовые действия. Прочти её до конца и с помощью кликера сможешь такое сделать:). Ну а дальше обычный лист компрехеншен, который сразу вставляется в функцию all(), которая в свою очередь добавляет в основной список строку только в том случае, если все элементы строки были True
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
лямбда-функция проверяет является ли цифра четной. Проверить на четность/нечетность можно не только с x % 2 == 0, но с побитовым И. Кстати, на форуме по кликерманну тоже есть статья, описывающая побитовые действия. Прочти её до конца и с помощью кликера сможешь такое сделать:). Ну а дальше обычный лист компрехеншен, который сразу вставляется в функцию all(), которая в свою очередь добавляет в основной список строку только в том случае, если все элементы строки были True
С побитовым "И" я понял. Я провел научный тест научным методом 🕵️‍♂️:
Python:
x, y, z = 5, 3, 2
print(x & 1, y & 1, z & 1)
# return 1 1 0
Но я не понимаю вот это "(j) for j in i". Как вот это создает список? o_O
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Но я не понимаю вот это "(j) for j in i". Как вот это создает список? o_O
Дело в том, что j в скобочках не просто так, он относится к лямбде. Заметь как прописана сама лямбда - она тоже в скобочках
(lambda x: int(x) & 1). Это я сделал для того, чтобы из цикла фор сразу в неё попадал первый элемент строки.
Давай возьмем пример попроще:
(lambda x: x*x)(3)
вернет 9, потому что я сразу передаю ему аргумент 3. А в нашем случае получается, что для лямбды аргументом является то, что возвращает цикл for j in i, а он возвращает нам по одной цифре из строки
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Дело в том, что j в скобочках не просто так, он относится к лямбде. Заметь как прописана сама лямбда - она тоже в скобочках
(lambda x: int(x) & 1). Это я сделал для того, чтобы из цикла фор сразу в неё попадал первый элемент строки.
Давай возьмем пример попроще:
(lambda x: x*x)(3)
вернет 9, потому что я сразу передаю ему аргумент 3. А в нашем случае получается, что для лямбды аргументом является то, что возвращает цикл for j in i, а он возвращает нам по одной цифре из строки
Спасибо за объяснение! Блин! Я, конечно, понимаю, что твоя задача писать весь код программы чуть ли не в паре строк... чтобы обсфуркция эта даже тебе не потребовалась! :LOL: Я понимаю, что твоя задача писать так, чтобы никто другой в твоем коде не разобрался, кроме тебя, но... блин! Тут же малыши-питонята на форуме вопросы задают! Сжалься, чувак! :ROFLMAO: 🙏
 
  • Ха-ха!
Реакции: 4olshoy_blen

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Дело в том, что j в скобочках не просто так, он относится к лямбде. Заметь как прописана сама лямбда - она тоже в скобочках
(lambda x: int(x) & 1). Это я сделал для того, чтобы из цикла фор сразу в неё попадал первый элемент строки.
Давай возьмем пример попроще:
(lambda x: x*x)(3)
вернет 9, потому что я сразу передаю ему аргумент 3. А в нашем случае получается, что для лямбды аргументом является то, что возвращает цикл for j in i, а он возвращает нам по одной цифре из строки
Слушай! А еще вопрос! Вот почему [i for i in range(10)] как и ожидается, возвращает список [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], а вот кортеж возвращать не хочет!
(i for i in range(10)) возвращает <generator object <genexpr> at 0x000002442430FAC0>
А! Понятно! Вот так надо tuple(i for i in range(10))
 
  • Мне нравится
Реакции: 4olshoy_blen

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Ок, уговорил))
Просто я понавидался простынь в кликермане, и вроде уже не новичками были, но как выкатят скрипт по 2-3к строк... аж страшно становится. Иногда думаешь, он че кликером пентагон решил взломать?)) А посмотришь так там одни клики да мувы и никаких условий:ROFLMAO:
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
пентагон решил взломать?)
Конечно! ) Ты про DDos-атаки слыхал? Твоим двустрочным кодом Пентагоновские сервера точно не перегрузишь и не заставишь упасть! :LOL:
 

Форум IT Специалистов