Есть ли другой способ распечатать несколько элементов списка, где индекс списка увеличивается на определенную величину с каждым отпечатком? - PullRequest
0 голосов
/ 01 июня 2019

У меня есть список, содержащий сотни целых чисел. Мне нужно взять 34 целых числа за раз, начиная с начала списка, и вывести целые числа в отдельных строках по 34.

Проблема в том, что я должен использовать несколько print (list[x:y]) и постоянно менять значения для x и y.

Я попытался указать каждый индекс в списке для печати, однако это нецелесообразно, поскольку список может содержать сотни значений.

integer = [
    3,23,12,34,2,4,7,11,14,1,9,17,12,1,0,5,4,3,2,4,8,1,12,15,18,17,14,23,12,0,0
    ,12,34,2,21,22,24,23,1,0,4,7,3,13,16,15,3,5,11,22,9,14,20,16,3,6,2,0,10,1,12
    ,18,9,9,23,6,2,18,14,1,0,3,5,17,13,12,5,6,9,0,1,2,19,20,2,3,5,7,15,19,2,4,10
    ,15,18,17,2,6,5,3,6,12,15,18,12,15,6,20,0,9,4,1,5,4,3,7,9,0,12,3,5,7,8,17,19
    ,21,0,1,2,7,7,7,5,4,3,8,19,12,16,0,2,4,7,8,4,12,12,9,3,20,2,21,3,5,8,9,12,17
    ,8,7,3,4,6,3,14,18,21,4,3,9,19,19,3,6,8,7,13,14,18,13,15,3,4,8,7,12
]

print (integer[0:34])
print (integer[35:69])
print (integer[70:104])

Выход:

[3, 23, 12, 34, 2, 4, 7, 11, 14, 1, 9, 17, 12, 1, 0, 5, 4, 3, 2, 4, 8, 1, 12, 15, 18, 17, 14, 23, 12, 0, 0, 12, 34, 2]
[22, 24, 23, 1, 0, 4, 7, 3, 13, 16, 15, 3, 5, 11, 22, 9, 14, 20, 16, 3, 6, 2, 0, 10, 1, 12, 18, 9, 9, 23, 6, 2, 18, 14]
[0, 3, 5, 17, 13, 12, 5, 6, 9, 0, 1, 2, 19, 20, 2, 3, 5, 7, 15, 19, 2, 4, 10, 15, 18, 17, 2, 6, 5, 3, 6, 12, 15, 18]

Ответы [ 3 ]

0 голосов
/ 01 июня 2019

Если вы ищете простой способ печати кусков размером chunk_size списка, используйте следующее понимание списка в одну строку:

[print(data[chunk_size * index : chunk_size * index + chunk_size]) for index in range((len(data) // chunk_size) + 1)]

Измените chunk_size, чтобы представить, какими большими вы хотите, чтобы ваши куски были.

Пример:

In[2]: x = list(range(35))
In[3]: x
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]
In[4]: chunk_size = 9
In[5]: [print(x[chunk_size * index : chunk_size * index + chunk_size]) for index in range((len(x) // chunk_size) + 1)]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[9, 10, 11, 12, 13, 14, 15, 16, 17]
[18, 19, 20, 21, 22, 23, 24, 25, 26]
[27, 28, 29, 30, 31, 32, 33, 34]
0 голосов
/ 01 июня 2019

так что вы хотите итеративно взять 34 элемента - я предполагаю, что вы хотите напечатать последние элементы списка, даже если их нет целых 34. Инструментом, который здесь используется, является цикл. Внутри цикла for вы хотите напечатать 34 элемента на основе текущего индекса, например:

print intlist(n:n+34)

хорошо, значит, ваша итерация ограничена. самый простой способ сделать это с помощью цикла do-while (и не забывайте увеличивать свою индексную переменную в каждом цикле):

n=0
while n < len(intlist):
    print intlist(n:n+34)
    n += 34

здесь есть ошибка. он не будет печатать последний раздел списка - потому что вы получите исключение IndexOutoFRange (когда n + 34 слишком велико). Чтобы это исправить, вы можете заключить это в блок try-Кроме, который будет обрабатывать особый случай, печатая в конец списка:

n=0
while n < len(intlist):
    try:
        print intlist(n:n+34)
    except:
        print intlist(n:)
    n += 34
0 голосов
/ 01 июня 2019

Предполагая, что ожидаемый результат не пропускает преднамеренно значение, как показано, следующее напечатает группы из 34 элементов в одной строке:

wholeLines = len(integer) // 34 * 34
for i in range( 0,wholeLines,34 ):
    print(integer[i:i+34])
print( integer[wholeLines:] )

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...