Если у меня есть список и вы хотите усечь его, чтобы его было не более 100 элементов, как это сделать?
Как урезать список?
Ответ 1
Чтобы изменить список на месте (а не сделать более короткую копию списка), используйте:
del l[100:]
Ответ 2
Вы можете использовать нарезку списка:
a = a[0:100]
Ответ 3
Другие упомянутые items[:100]
дают вам новый список, содержащий первые 100 элементов items
. Если вы хотите изменить список на месте, либо используйте используйте items[:] = items[:100]
(назначение slice), либо while len(items) > 100: items.pop()
del items[100:]
, как было предложено Ned Batchelder.
Ответ 4
Вы можете использовать нарезку, если не возражаете просто создать новую копию списка, который содержит только те элементы, которые вы хотите... однако это оставляет исходный список немодифицированным.
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> b = a[0:5]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b
[0, 1, 2, 3, 4]
Если вы действительно хотите усечь исходный список, просто удалите элементы, которые вы не хотите, используя нарезку с помощью del
>>> del a[5:]
>>> a
[0, 1, 2, 3, 4]
Ответ 5
Вы можете сделать что-то вроде:
truncated = list[:100]
Ответ 6
Правильный ответ, конечно:
>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = x[:5]
>>> x
[0, 1, 2, 3, 4]
Но, что важно, если вы заинтересованы в значениях выше 100 и хотите потянуть их один за другим по любой причине, вы также можете использовать POP()
>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x.pop()
9
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8]
Вы даже можете указать, какой элемент вывести:
>>> x= range(10,20)
>>> x
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> x.pop(3)
13
>>> x.pop()
19
>>> x
[10, 11, 12, 14, 15, 16, 17, 18]
>>> x.pop(-1)
18
[10, 11, 12, 14, 15, 16, 17]
Это удаляет отдельные элементы, сокращая список, без копирования.
Таким образом, тупой и yucky ответ (но и правильный) должен был бы итерации вниз. Я просто снижаюсь с 12 до 8 для удобства чтения здесь:
>>> x=range(12)
>>> for i in range(len(x), 8, -1):
... y = x.pop()
... print "popping x: ", y, ", x=", x
...
popping x: 11 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
popping x: 10 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
popping x: 9 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8]
popping x: 8 , x= [0, 1, 2, 3, 4, 5, 6, 7]
Конечно, это не оптимально, но я просто столкнулся с ситуацией, когда мне это нужно, поэтому я решил поделиться ею здесь (я обрезаю список, когда вижу первое значение, отличное от None).