微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Python 中的列表理解将空元素保留在列表中?

如何解决如何使用 Python 中的列表理解将空元素保留在列表中?

ls=['ISSN1','94500','2424922X','','21693536','01464116','16879724','22042326','07419341','09272852','00015903','0324721X','']
ls = [i.zfill(8) for i in ls if i != ""]
ls

Output:
['000ISSN1','00094500','0324721X']

然而,这删除了空元素。我尝试了其他几种方法来保持空元素:

方法一:

for i in range(len(ls)):
    if ls[i]!="":
        ls[i]=str(ls[i]).zfill(8)
    else:
        pass
    
ls

方法二:

def changes(ls):
    for i in range(len(ls)):
        if ls[i]!="":
            ls[i]=str(ls[i]).zfill(8)
        else:
            pass
    return ls

ls=changes(ls)
ls

两种方法都返回我想要的输出

['000ISSN1','']

我仍然想知道是否有一种方法可以通过列表理解实现相同的结果?

解决方法

您可以在推导式中使用条件表达式 (a if condition else b):

ls = [i.zfill(8) if i else i for i in ls]

请注意,这会将 if i != "" 缩短为 if i,因为在布尔上下文中只有空字符串为假。

对于您的特定情况,您还可以使用一些技巧(使用 True == 1,False == 0 的事实)使其更短:

ls = [i.zfill(8*bool(i)) for i in ls]
,

见下文

ls = ['ISSN1','94500','2424922X','','21693536','01464116','16879724','22042326','07419341','09272852','00015903','0324721X','']
ls = [i.zfill(8) if i else i for i in ls]
print(ls)

输出

['000ISSN1','00094500','']
,

您只需在代码中添加一个“else”。

ls=['ISSN1','']
ls = [i.zfill(8) if i != "" else '' for i in ls]
ls

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?