gpt4 book ai didi

python - 使用条件删除列表的元素

转载 作者:行者123 更新时间:2023-12-01 04:04:37 24 4
gpt4 key购买 nike

您好,我正在学习用 Python 编程来操作数据库,但我无法完成这个简单的任务。请有人帮助我。我有这个 list

CIS=['4998200lp','2159140lp','02546or']

我想要得到这个结果:

CIS=['4998200lp','2159140lp','2546or']

我正在尝试类似的事情:

for x in CIS:
izq= x[:1]
if izq == 0:
CIS=[x.replace(x[:1],'') for x in CIS]
print (CIS)

我只想删除条件 izq == 0 的每个字符串的第一个元素。

最佳答案

您的描述与您的示例输入/输出不匹配,这也与您的代码不同。

根据示例输入/输出,我怀疑您想要做的是从任何以 0 开头的字符串中删除单个前导 0。这还不错,但是如果没有要分配回的索引,您就无法在 for 循环中执行此操作。为此,您可以使用enumerate:

for i, x in enumerate(CIS):
if x.startswith('0'): # or x[:1] == '0' if you really prefer
CIS[i] = x[1:]

或者,您可以使用列表理解来替换 CIS:

CIS = [x[1:] if x.startswith('0') else x for x in CIS]

并就地变异(而不是创建一个新的列表),使用相同的理解,但分配给完整的切片,这使得它的行为类似于第一个示例中拼写出的循环:

CIS[:] = [x[1:] if x.startswith('0') else x for x in CIS]

如果将 CIS 作为参数传递给函数,或者在多个位置进行引用,则示例 #1/#3 和示例 #2 之间会出现差异。在 #1/#3 中,它对 list 进行了适当的修改,因此所有引用都将看到更新,在 #2 中,它重新分配了 CIS,但保留了原始的 >列表不变;如果存在其他引用,它们不会出现更改。

注意:如果目标是删除所有前导0,则使用str.lstrip,例如:

CIS = [x.lstrip('0') for x in CIS]

对其他方法进行类似的调整。在这种情况下,您甚至不需要测试 0 是否存在,因为如果不存在,lstrip 将返回未修改的 str0 开头。

关于python - 使用条件删除列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853074/

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