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

我有一个巢列表:


listSchedule = [[list1], [list2], etc..]]

我有另一个列表,如果每个嵌套列表的第一个元素与字符串匹配,我想将此列表的元素附加到每个嵌套列表中。


我可以做到,但我想知道是否有更“pythonic”的方式,使用列表理解?


index = 0;

for row in listSchedule:

   if row[0] == 'Download':

      row[3] = myOtherList[index]

      index +=1


富国沪深
浏览 236回答 3
3回答

一只名叫tom的猫

您的代码非常易读,我不会更改它。通过列表理解,您可以编写如下内容:for index, row in enumerate([row for row in listSchedule if row[0] == 'Download']):     row[3] = myOtherList[index]

神不在的星期二

您可以尝试这样做,但复制 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]]

慕慕森

我们可以使用一个队列,当满足条件时将其值一一弹出。为了避免复制数据,让我们将队列实现为myOtherList使用迭代器的视图(感谢ShadowRanger)。queue = iter(myOtherList)for row in listSchedule:    if row[0] == "Download":        row.append(next(iter))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python