Уведомления

Группа в Telegram: @pythonsu

#1 Март 26, 2021 15:30:00

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

Есть такая задача:
Напишите программу, которая считывает список чисел lst из первой строки и число xx из второй строки, которая выводит все позиции, на которых встречается число xx в переданном списке lst.
Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку “Отсутствует” (без кавычек, с большой буквы).
Позиции должны быть выведены в одну строку, по возрастанию абсолютного значения.
Sample Input 1:
5 8 2 7 8 8 2 4
8
Sample Output 1:
1 4 5

Встал в ступор по ней. Написал только такое:

 b = [int(i) for i in input().split()]
w = int(input())
y = []
if b.index(w) == 0:
    print('Отсутствует')
if b.index(w) > 0:
    y += b.index(w)
Как вывести все индексы?

Отредактировано MagentaIceberg (Март 26, 2021 15:31:43)

Офлайн

#2 Март 26, 2021 15:49:09

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

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

Офлайн

#3 Март 26, 2021 15:56:34

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

MagentaIceberg
Как вывести все индексы?
никак, нет волшебной комманды “вывести все индексы”, нужно в цикл пройтись по всем элементам, и записать в отдельный список все индексы если элемент равен искомому.
подсказка: enumerate()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 26, 2021 15:57:21)

Офлайн

#4 Март 28, 2021 17:50:29

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

xam1816
Сделай свою задачу на листке бумаги, и проследи за своими действиями,обрати внимание на свой алгоритм.Расскажи здесь как ты мыслишь
да, надо бы такую привычку завести)

Офлайн

#5 Март 28, 2021 17:51:18

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

PEHDOM
мерси, обдумаю!

Офлайн

#6 Март 28, 2021 18:30:14

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

PEHDOM
хватило только на такое:
 b = [int(i) for i in input().split()]
w = int(input())
y = []
if b.index(w) == False:
    print('Отсутствует')
b.enumerate(w) for i in b:
    y += b.index(w)
print (*y)

Если честно, не особо понимаю как это можно сделать корректно.

Отредактировано MagentaIceberg (Март 28, 2021 18:30:44)

Офлайн

#7 Март 28, 2021 22:30:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

MagentaIceberg
Напишите программу, которая считывает список чисел lst из первой строки и число xx из второй строки, которая выводит все позиции, на которых встречается число xx в переданном списке lst.
Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку “Отсутствует” (без кавычек, с большой буквы).
Позиции должны быть выведены в одну строку, по возрастанию абсолютного значения.

  
>>> def f():
...     lst = list(map(int, input().split()))
...     num = int(input())
...     out = [i for i, e in enumerate(lst) if num == e]
...     if out:
...         print(*out)
...     else:
...         print('Отсутствует')
... 
>>> f()
5 8 2 7 8 8 2 4
8
1 4 5
>>> f()
1 2 3
4
Отсутствует
>>>



Отредактировано py.user.next (Март 29, 2021 16:14:58)

Офлайн

#8 Март 29, 2021 11:05:22

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

py.user.next
Выполняется, единственно, убрал создание функции, тк компилятор в курсе почему-то не принимал с ней.

Вообще интересный код, мы правда не прошли enumerate и map, но смысл синтаксиса понятен(особенно, если просто посмотреть в инете). Единственно, уточню по этой строчке: i for i, e in enumerate(lst) - не до конца понимаю работу, можете объяснить как работает синтаксис. Например, цикл на i при том, что i ни где не инициализирован, да и ‘e’ тоже не инициализирован(понимаю, что если равен num, то мы как раз и запишем индексы, но как..)?

Отредактировано MagentaIceberg (Март 29, 2021 11:09:33)

Офлайн

#9 Март 29, 2021 16:31:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

MagentaIceberg
Единственно, уточню по этой строчке: i for i, e in enumerate(lst) - не до конца понимаю работу, можете объяснить как работает синтаксис. Например, цикл на i при том, что i ни где не инициализирован, да и ‘e’ тоже не инициализирован(понимаю, что если равен num, то мы как раз и запишем индексы, но как..)?
Можешь в книге Dive Into Python 3 прочитать про включения (comprehension)
https://diveintopython3.net/comprehensions.html
https://diveintopython3.net/comprehensions.html#listcomprehension

Это примеры, которые можешь у себя позапускать и поменять, чтобы понять, что на что влияет
  
>>> lst = ['a', 'b', 'c', 'd', 'e'] # добавь сюда буквы и перезапусти
>>> 
>>> list(enumerate(lst))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]
>>> 
>>> for x, y in [(1, 2), (3, 4)]: # добавь сюда пары точек и перезапусти
...     print(x, y)
... 
1 2
3 4
>>> 
>>> for number, letter in enumerate(lst): # переименуй переменные number и letter и перезапусти
...     print(number, letter)
... 
0 a
1 b
2 c
3 d
4 e
>>>
>>> for i in range(3):
...     print(i)
... 
0
1
2
>>> [i for i in range(3)]
[0, 1, 2]
>>> 
>>> [i * i for i in range(5)]
[0, 1, 4, 9, 16]
>>> 
>>> [(i, i * i) for i in range(5)]
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
>>>

Вообще, читай книжки, чтобы наугад не пытаться понимать синтаксис. Ты его не поймёшь наугад. А в книжках всё написано и расписано. Оно и время экономит, и знания при этом полные остаются, а не с пробелами.



Отредактировано py.user.next (Март 29, 2021 16:35:55)

Офлайн

#10 Март 29, 2021 20:11:31

MagentaIceberg
Зарегистрирован: 2021-03-18
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти расположение значения в списке несколько раз

py.user.next
ого! Очень многогранный, конечно, синтаксис!

Спасибо огромное за советы и разъяснение!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version