【问题标题】:Condition to convert NoneType into a string将 NoneType 转换为字符串的条件
【发布时间】:2020-02-24 22:12:31
【问题描述】:

我有这个 python 代码,我想将 NoneType 变量转换为字符串,所以我写了这个条件来捕获它,但我无法覆盖它。那怎么办?谢谢

int_list= ['10','3',None,'5','8']
i = 0
for l in int_list:
    if l is None:
        l == 'hello'
    print l
    i+=1

预期输出:

10
3
hello
5
8

【问题讨论】:

  • 您的“列表”实际上是一个元组,因此您将无法就地修改它,如果它是一个列表,您将按照int_list[i] = 'hello' 的方式做一些事情,因为只需重新分配局部变量l 甚至不尝试修改原始列表。
  • 如果您在浏览器中搜索“Python 列表元组教程”,您会发现可以比我们在此处管理的更好地解释这一点的参考资料。您的代码不会尝试更改 int_list
  • @TadhgMcDonald-Jensen 我尝试使用列表 l = [],我想根据该条件分配一个 var 类型
  • 这能回答你的问题吗? How to modify list entries during for loop?

标签: python nonetype


【解决方案1】:

您只是更改变量l 的值,该变量当前包含int_list 中的一个元素,不是列表本身

您需要使用新值重新分配列表中的元素,使用index(此处为i)来访问列表对象中的此元素。

这样做:

int_list= ['10','3',None,'5','8']
i = 0
for i in range(len(int_list)):
    if int_list[i] is None:
        int_list[i] = 'hello'  # accessing element IN THE LIST as index/position i, reassigning it to the new value 'hello'
    i+=1
print(int_list)

输出:

['10', '3', 'hello', '5', '8']

【讨论】:

    【解决方案2】:

    您将条件测试用作作业。这行不通。相反,请尝试:

    int_list= ['10','3',None,'5','8']
    i = 0
    for l in int_list:
        if l is None:
            l = 'hello'
        print l
        i+=1
    

    简而言之,将第五个中的 == 替换为单个 =。希望对您有所帮助。

    【讨论】:

    • 我认为他想转换它,而不仅仅是打印它,这样就行不通了?
    • 感谢您的回答,但它不会在条件之外转换它,我想分配一个类型(字符串)
    • @aliouawalid 你想让 int_list 成为一个字符串列表,不管是什么类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2019-05-06
    • 2022-01-24
    • 2022-11-23
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多