在Python中用零长度字符串替换None

时间:2015-06-22 15:18:09

标签: python python-2.7

我想用零长度字符串替换input的Null值。我的代码似乎没有任何效果。我错过了什么?

None

4 个答案:

答案 0 :(得分:2)

不幸的是,您目前所做的只是将变量y设置为完全不同的字符串'',这与您的原始列表完全没有关系,并且当您继续时,信息完全丢失迭代。要完全替换所有这些,可以使用索引进行循环。

for i in range(len(mylist)):
    for j in range(len(mylist[i])):
        if mylist[i][j] == None:
            mylist[i][j] = ''

答案 1 :(得分:2)

你错误地做了,当迭代一个列表时,你得到了list元素,试图在循环中设置它并没有在实际列表中改变它,你需要获取该元素的索引并将其更改为在列表中,您可以使用enumerate函数。

示例 -

mylist = [[2,3,None],[None,3,4]]

for x in mylist:
    for i,y in enumerate(x):
        if y is None:
            x[i] = ''

print mylist
>> [[2, 3, ''], ['', 3, 4]]

答案 2 :(得分:1)

变量y只是对列表中相应元素的临时读取访问权限。如果您想更改列表值,请尝试通过计数器直接访问它们。

下面的代码重新组装整个嵌套列表,这是另一种选择:

mylist = [[2,3,None],[None,3,4]]
mylist = [[yI if yI is not None else '' for yI in xI] for xI in mylist]

答案 3 :(得分:0)

我个人不喜欢在迭代它们时改变列表,返回一个新列表就是标准库中的每个函数。这是一个函数,它将返回一个新的列表,其中所需的元素被替换,它将适用于任何“深度”的列表,因为缺少更好的单词

def list_replace(old_list, replace=None, replace_with=''):
    new_list = []
    for elem in old_list:
        if isinstance(elem, list):
            new_list.append(list_replace(elem))
        else:
            new_list.append(replace_with if elem == replace else elem)
    return new_list