Python-如何更改列表列表中的值?

2024-05-19 00:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表列表,列表中的每个列表包含5个项目,如何更改列表中项目的值?我试过以下方法:

    for [itemnumber, ctype, x, y, delay] in execlist:
        if itemnumber == mynumber:
            ctype = myctype
            x = myx
            y = myy
            delay = mydelay

最初我有一个元组列表,但我意识到我无法更改元组中的值,所以我切换到列表,但我仍然无法更改任何值。如果我从for循环中打印ctype、x、y、delay、myctype、myx、myy或mydelay,则似乎一切正常,但如果我在之后打印execlist,则会看到没有任何更改。


Tags: 项目方法in列表forifctype元组
3条回答

您可以使用enumerate()

for index, sublist in enumerate(execlist):
   if sublist[0] == mynumber:
       execlist[index][1] = myctype
       execlist[index][2] = myx
       execlist[index][3] = myy
       execlist[index][4] = mydelay
       # break

如果execlist最多只包含一个子列表,而该子列表的第一项可以等于mynumber,则可以删除#;否则,将无用地循环遍历该列表的其余部分。

如果itemnumbers事实上是唯一的,那么最好使用字典,或者至少使用OrderedDict,这取决于您打算对数据执行的其他操作。

问题是,您正在创建列表的副本,然后修改该副本。您要做的是修改原始列表。请改为:

for i in range(len(execlist)):
    if execlist[i][0] == mynumber:
         execlist[i][1] = myctype
         execlist[i][2] = myx
         execlist[i][3] = myy
         execlist[i][4] = mydelay

您需要通过索引进行分配。假设你有一个列表,里面的列表都有5个你描述过的项目。如果要遍历它们并更改每个内部列表中第二个项的值,可以执行以下操作:

l = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]
for i in l:
    i[1] = "spam"

print l
(output) [[0, "spam", 2, 3, 4], [5, "spam", 7, 8, 9], [10, "spam", 12, 13, 14]]

相关问题 更多 >

    热门问题