Вывод слова по цифре Python

Напишите программу, которая проходит по всем числам от 1 до 100 и для каждого числа выводит это число, но если оно делится на три — выводит вместо числа «тыры», если на пять — «пыры», а если и на три и на пять — «тыры-пыры». Я сделал так только с цифрой 3, и не могу понять как делать дальше.

array = list(range(1,101))
array2 = []


for i in array:
    if i%3 == 0:
        i = "пыры"
        array2.append(i)
    else:      
        continue

print(array2)   

Ответы (4 шт):

Автор решения: Kers

Вариант решения

arr = []
for i in range(1,101):
    if i%15 == 0:
        arr.append("тыры-пыры")
    elif i%3 == 0:
        arr.append("тыры")
    elif i%5 == 0:
        arr.append("пыры")
    else:
        arr.append(i)
print(arr)
→ Ссылка
Автор решения: Zhihar

немного изврата:

arr = [{0: "тыры-пыры", 3: "тыры", 5: "пары", 6: "тыры", 9: "тыры", 10: "пары", 12: "тыры"}.get(i % 15, i) for i in range(1,101)]
→ Ссылка
Автор решения: n1tr0xs

Да здравствуют однострочники:

arr = ['тыры-пыры' if i%15==0 else 'пыры' if i%5==0 else 'тыры' if i%3==0 else i for i in range(1, 101)]
→ Ссылка
Автор решения: Vasyl Kolomiets

Вот решение без делений и умножений. возможно оно быстрее (

div3, div5 = 1, 1
for i in range(1,101):

    text3 = "тыры" if div3 == 3 else ""
    text5 = "пыры" if div5 == 5 else ""

    text_answer = "".join([text3,
                           "-" if div3 == 3  and  div5 == 5  else "",
                           text5
                           ])
    print(text_answer if text_answer else i)
    div3 = div3 + 1 if div3 != 3 else 1
    div5 = div5 + 1 if div5 != 5 else 1

Вот сравнение и увы мой способ хуже.... Интересно почему. наверное из за принта в цикле

228 µs ± 19.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
13.1 ms ± 1.5 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)

Конечно, у меня нет результирующего списка значений, но в задаче о нем ни слова. Если же список таки нужен, то вот:

rez = [i for i in range(1,101)] div3, div5 = 1, 1 for i in range(1, 101):

text3 = "тыры" if div3 == 3 else ""
text5 = "пыры" if div5 == 5 else ""

text_answer = "".join([text3,
                       "-" if div3 == 3  and  div5 == 5  else "",
                       text5
                       ])
if text_answer:
    rez[i-1] = text_answer

div3 = div3 + 1 if div3 != 3 else 1
div5 = div5 + 1 if div5 != 5 else 1

print(rez)

с результатом

257 µs ± 10.9 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

Как не странно, мой вариант медленнее, интересно - почему.
Вариант от Zhihar тоже лучше моего:

244 µs ± 12.4 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
→ Ссылка