从列表中删除最后n个元素。我得到错误:“ValueError:列表.删除(x) :x不在列表中“

2024-04-25 04:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个错误在这个代码,我不明白为什么它是错误的。你知道吗

LL = [2,3,4,5,6,2,5,4]
print(x[-4:])
def remove_last_elements(the_list):
    while len(the_list) > 5 in the_list:
       the_list.remove(the_list[-4:])
    print(the_list)
remove_last_elements(LL)

输出应为LL=[2,3,4,5]。我需要len()>;5,因为我有几个列表(嵌套)包含不同数量的元素。你知道吗

下面是我收到的错误信息:

Traceback (most recent call last):
  File "C:/APPL/DPI/PDF_reader/test_general.py", line 68, in <module>
    remove_last_elements(LL)
  File "C:/APPL/DPI/PDF_reader/test_general.py", line 66, in remove_last_elements
    the_list.remove(the_list[-4:])
ValueError: list.remove(x): x not in list

Tags: theinlenpdf错误elementsremovelist
2条回答

您不必检查任何条件。试着把前五个元素:

the_list = the_list[:5]

如果列表中的元素少于五个,则切片操作符将被忽略。你知道吗

是的,你应该用一个简单的比较。如果列表中有5个以上的元素,请删除最后5个。把它看作是保留所有的但是最后5个。你知道吗

if len(the_list) > 5:
    the_list = the_list[:-4]

如果要减少列表,直到元素不超过5个,则将if替换为while。你知道吗


按操作说明更新

您的任务是删除由5个元素组成的组,直到不超过5个元素为止。用模算符就足够简单了。你知道吗

final_size = len(the_list) % 5
if final_size = 0:
    final_size = 5

the_list = the_list[:final_size]

您的原始代码有几个结构问题。如果您担心列表中有多少元素,为什么要检查特定的元素?5 in the_list正在查找5,而不是5个元素。你知道吗

其次,您的列表由整数组成,但您正试图删除一个自引用子列表:

the_list.remove(the_list[-4:])

正如您已经知道的,这个片段是由五个元素组成的特定列表。在the_list中没有子列表,因此无法将其作为元素。如果要从原始列表中明确删除每个元素,则必须依次遍历它们。简单地获取你想要保留的列表片段要容易得多。你知道吗

相关问题 更多 >