Распечатать список в указанном диапазоне Python

1

Я новичок в Python, и у меня есть эта проблема.

У меня есть список таких чисел:

n = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

Я хочу напечатать от 11 до 37, что означает выход = 11, 13,.... 37.

Я попытался print(n[11:37]) но, конечно, он напечатает [37, 41, 43, 47], потому что это индекс диапазона.

Любые идеи или у Python есть встроенный метод для этого?

Теги:
list

6 ответов

3
Лучший ответ

Это должно сделать работу...

n = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
n.sort()

mylist = [x for x in n if x in range(11, 38)]
print(mylist)

Хотите напечатать это как строку, разделенную запятой:

print(mylist.strip('[]'))
4

Это сработает. (Предполагаемый список сортируется)

print n[n.index(11): n.index(37)+1]

Выход:

[11, 13, 17, 19, 23, 29, 31, 37]
1

Учитывая, что ваш список заказан, и у него нет дубликатов:

n = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

print(",".join(map(str,n[n.index(11): n.index(37)+1])))

Здесь у вас живой пример

1

Использование numpy:

import numpy as np
narr = np.array(n)
m = (narr >= 11) & (narr <= 37)
for v in narr[m]:
    print(v)
# or, to get rid of the loop:
print('\n'.join(map(str, narr[m])))
0

это довольно просто, так как ваш список уже отсортирован, вы можете написать

 my_list = [x for x in n if x in range(11, 38)]
 print(*my_list)

то, что делает "*", состоит в том, что он распаковывает массив в отдельные элементы, термин, известный как распаковка. Это приведет к фактическому результату, который вы хотели, а не к массиву

-3

Если ваши данные отсортированы, вы можете использовать выражение генератора либо с объектом range либо с привязкой по цепочке:

n = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

print(*(i for i in n if i in range(11, 38)), sep=', ')   
print(*(i for i in n if 11 <= i <= 37), sep=', ')

Если ваши данные не отсортированы и вы можете использовать индексы первых вхождений каждого значения, вы можете нарезать список:

print(*n[n.index(11): n.index(37)+1], sep=', ')

Результат с данными, которые вы предоставили:

11, 13, 17, 19, 23, 29, 31, 37

Ещё вопросы

Сообщество Overcoder
Наверх
Меню