【问题标题】:Looping over lists in list循环列表中的列表
【发布时间】:2016-08-01 13:15:21
【问题描述】:

我有两个带数字的列表。

newlist      = [506.5, 133.0, 11104.2]
totalcolumns = [9.2, 10024.5, 610.0, 1100.0]

我想遍历两个列表并以相同的方式格式化数字:

myformatlists = [newlist, totalcolumns]

for i in range(0,len(myformatlists)):
     myformatlists[i] = ['{0:,}'.format(x) for x in myformatlists[i]]
     myformatlists[i] = [regex.sub("\.0?$", "", x).replace(".", "_").replace(",", ".")

打印

print(str(myformatlists[i]) 

给出正确的新值

但是

print(str(newlist))
print(str(totalcolumns))

仍然给出旧列表。
为什么我的 for 循环不将值分配给 myformatlists[i] 中的列表名?

如何将 for 循环的输出分配给 myformatlists 中的列表?

【问题讨论】:

    标签: python list python-3.x for-loop variable-assignment


    【解决方案1】:
    myformatlists[i] = ['{0:,}'.format(x) for x in myformatlists[i]]
    

    重新绑定myformatlists[i],不会改变myformatlists原来的项目。

    您可以使用切片表示法对myformatlists[i] 执行就地更新:

    myformatlists[i][:] = ['{0:,}'.format(x) for x in myformatlists[i]]
    

    这将改变原始列表。

    但请注意,由于列表理解不完整,未定义 x 的 re 代码存在问题:

    myformatlists[i] = [regex.sub("\.0?$", "", x).replace(".", "_").replace(",", ".")
    

    应该是re.sub,也许其余的应该是:

    myformatlists[i] = [re.sub("\.0?$", "", x).replace(".", "_").replace(",", ".") for x in myformatlists[i]]
    

    【讨论】:

    • 谢谢 :) 我唯一要做的就是将 myformatlists[i] 更改为 myformatlists[i][:],不是吗?
    • @Reman:是的。并修复第二个列表理解(但这可能是一个错字)。
    • 不,它不是一种类型。我使用 regex 模块而不是 re 模块。我忘了在我的例子中提到import regex。感谢您的精彩回答!
    猜你喜欢
    • 2012-12-04
    • 2021-11-25
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多