Если вы не хотите изменять eachAbstract
объекты, а просто получить урезанную версию, вы можете использовать следующее:
truncated_list = [abstract[:trim_len] for abstract in train_abstracts_encoded]
Обратите внимание, что это отличается от вашей версии с помощью del
поскольку он не изменяет объект.
Вы все еще можете упростить свою версию, переместив общую часть из ветвей if/else
:
truncated_list = []
for eachAbstract in train_abstracts_encoded:
if len(eachAbstract) > trim_len:
del eachAbstract[trim_len:]
truncated_list.append(eachAbstract)
Но поскольку вы модифицируете объекты В любом случае на месте вы можете просто создать копию исходного списка, а затем l oop поверх него (это будет немного быстрее, потому что copy()
избегает повторных вызовов append
и, следовательно, внутреннего изменения размера):
truncated_list = train_abstracts_encoded.copy()
for eachAbstract in truncated_list:
if len(eachAbstract) > trim_len:
del eachAbstract[trim_len:]
Здесь train_abstracts_encoded
и truncated_list
совместно используют одни и те же объекты.