1

Python 菜鸟在这里。我有一个表示为字符串的数字列表。个位数用零表示,我正试图摆脱零。例如,['01', '21', '03'] 应该是 ['1', '21', '3']。

我目前的解决方案似乎有点笨拙:

for item in list:  
    if item[0] == '0':     
        list[list.index(item)] = item[1]

我想知道为什么这不起作用:

for item in list:  
    if item[0] == '0':  
        item = item[1]
4

4 回答 4

4

重新绑定迭代名称不会改变列表。

还:

>>> [str(int(x, 10)) for x in ['01', '21', '03']]
['1', '21', '3']
于 2012-07-18T02:41:26.583 回答
3

您可以尝试剥离零:

>>> map(lambda x: x.lstrip('0'), ['001', '002', '030'])
['1', '2', '30']
于 2012-07-18T02:44:23.777 回答
3

要改变列表:

for i, item in enumerate(mylist):  
    if item.startswith('0'):     
        mylist[i] = item[1:]

更好的可能只是创建一个新列表:

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

您的代码不起作用,因为分配给item仅给名称item一个新值,它对 . 的旧值没有任何作用item

于 2012-07-18T02:48:11.667 回答
-1

代码“item”是一个变量,它在您遍历列表时包含该项目的值。它没有引用列表本身。

您的第一个解决方案非常慢,因为它必须在列表中搜索每个项目才能找到索引。

有关如何完成所需内容的示例,请参阅其他答案。

于 2012-07-18T02:45:12.123 回答