如何将第二行中的所有数据除以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'未定义
答案 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]
中每个值的值。