如何在Python中附加嵌套列表?

时间:2014-10-26 20:39:09

标签: python list nested

如何将第二行中的所有数据除以2?

recipe  = [
    ['eggs', 'flour', 'meat'],
    [4, 250, 5],
    ['large','grams', 'kg'],
]

我尝试过

for row[2] in recipe:

但是我收到一个错误说:

  

追踪(最近一次呼叫最后一次):

     

File" /Users/g/Documents/reicpe.py" ;,第7行,在       for row [2] in meat_pie:

     

NameError:name' row'未定义

4 个答案:

答案 0 :(得分:3)

你也可以使用 list comprehension 并在没有 for-loop 的情况下在一行中完成:

recipe[1] = [num / 2 for num in recipe[1]] 

代码说明[num / 2 for num in recipe[1]]

  • recipe[1]:这是一个列表,它是recipe列表的第二个元素

    recipe 的第二个元素是: [4, 250, 5]

  • for num in recipe[1]:这意味着我们要循环遍历recipe[1]的元素,因此num它是变量,而且它是&#39 ; s值在每次迭代中更改列表元素。

  • num / 2:显而易见,我们得到num并除以2

答案 1 :(得分:1)

recipe  = [
    ['eggs', 'flour', 'meat'],
    [4, 250, 5],
    ['large','grams', 'kg'],
]

暂且不谈,如果您想将数量除以2,并改变存储的内容,那么作为字典会更好:

for quantity, index in enumerate(recipe[1])
    recipe[1][index] = quantity/2

更好的方法是使用字典,它允许您为数据项命名:

recipe = {"eggs":{"quantity":4, "measurement":"large"},
         "flour":{"quantity":250,"measurement":"grams"}, 
         "meat":{"quantity":5,"measurement":"kg"}}

现在由二分成:

for ingredient in recipe:
    recipe[ingredient]["quantity"] = recipe[ingredient]["quantity"]/2

并打印配方变为:

for ingredient in recipe:
    print "{} {} {}".format(recipe[ingredient]["quantity"], recipe[ingredient]["measurement"], ingredient)

这会产生:

4 large eggs
250 grams flour
5 kg meat

并没有对索引号等感到不满。

答案 2 :(得分:0)

您正在尝试迭代错误的部分。当您使用语句for i in list时,i将被创建为一个新变量(就像您刚刚声明i = 5一样)。所以在这一点上,它没有元素5的getter(索引或其他)(并且它不是有效的变量名)。

要修复迭代问题,请尝试:

for row in mylist[index]:

那将迭代mylist中索引的列表,当然记住列表是0索引的(你的数字是索引1)。

您很快就会在更新数组中的值时遇到另一个问题,因为该过程会按照您的方式创建副本。一个简单的解决方法是使用enumerate(但我会在给你之前先试试看!)

答案 3 :(得分:0)

recipe[1]会在食谱列表中为您提供第二个列表。请记住,列表索引始终以0开头。

然后:

for row in recipe[1]:

将使用row进行迭代,获取recipe[1]中每个值的值。