为了账号安全,请及时绑定邮箱和手机立即绑定

将元素添加到嵌套列表的pythonic方法

将元素添加到嵌套列表的pythonic方法

富国沪深 2021-06-09 18:57:02
我有一个巢列表:listSchedule = [[list1], [list2], etc..]]我有另一个列表,如果每个嵌套列表的第一个元素与字符串匹配,我想将此列表的元素附加到每个嵌套列表中。我可以做到,但我想知道是否有更“pythonic”的方式,使用列表理解?index = 0;for row in listSchedule:   if row[0] == 'Download':      row[3] = myOtherList[index]      index +=1
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您的代码非常易读,我不会更改它。

通过列表理解,您可以编写如下内容:

for index, row in enumerate([row for row in listSchedule if row[0] == 'Download']):
    row[3] = myOtherList[index]


查看完整回答
反对 回复 2021-06-22
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您可以尝试这样做,但复制 otherlist 以免丢失信息:


[row+[myotherlist.pop(0)] if row[0]=='Download' else row for row in listScheduel]

例如:


list = [['Download',1,2,3],[0,1,2,3],['Download',1,2,3],['Download',1,2,3]]

otherlist = [0,1,2,3,4]

l = [ row+[otherlist.pop(0)] if row[0]=='Download' else row for row in list]

输出:


[['Download', 1, 2, 3, 0],

[0, 1, 2, 3],

['Download', 1, 2, 3, 1],

['Download', 1, 2, 3, 2]]


查看完整回答
反对 回复 2021-06-22
?
慕慕森

TA贡献1856条经验 获得超17个赞

我们可以使用一个队列,当满足条件时将其值一一弹出。为了避免复制数据,让我们将队列实现为myOtherList使用迭代器的视图(感谢ShadowRanger)。


queue = iter(myOtherList)


for row in listSchedule:

    if row[0] == "Download":

        row.append(next(iter))


查看完整回答
反对 回复 2021-06-22
  • 3 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信