gpt4 book ai didi

python - 如何优雅地从列表中切掉不同长度的尾部?

转载 作者:太空狗 更新时间:2023-10-30 01:23:10 30 4
gpt4 key购买 nike

我是 Python 的新手,这是一个相当基础的问题。

我有一个列表 lst并在某个时候计算出一个整数 n0<=n<=len(lst)这告诉我(出于手头的目的)我应该丢弃最后的 n列表的元素。想到实现这一点的语句是 del lst[-n:]或者也许 lst[-n:]=[] (我发现在任何一种情况下,在冒号后添加 0 都不是一个好主意,因为在此设置中零不被认为大于 -n)。然而,当 n==0 时,两种变体都会失败,因为列表被完全清空了。我真的应该在这里插入一个零的显式测试,还是弯腰写

del lst[len(lst)-n:]

或者有什么可以在这里完成的更优雅(和可靠)的东西吗?

最佳答案

在考虑了建议的其他可能性之后,我得出结论

del lst[len(lst)-n:]  # do not remove the len(lst) since n==0 is possible !

尽可能干净。 len(lst)的计算可能不是很漂亮,但它所代表的成本可以忽略不计。

很久以后添加:这里的问题源于这样一个事实,即索引表达式作为边界“从右数”的解释是根据表达式的运行时值动态确定的(即它是负的),以及值 0 已经被用作表示最左边的边界,不能也意味着最右边的边界。如果该特征是根据句法特征确定的,那么无需显式算法就完全可以指定 i 从右边开始放置的边界,其中 i 很可能为 0。不可能编写一个表达式,其中某些绑定(bind)有时从左侧解释,有时从右侧解释,具体取决于运行时状态,但这是人们几乎不想要的无论如何都要做。

关于python - 如何优雅地从列表中切掉不同长度的尾部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16047683/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com