2 python 中的列表理解
2 List Comprehension in python
我试着写这个,其中 s 只是一个 int
for box in current_boxes:
for i in range(len(box)):
box[i] = box[i]*s
all_boxes.append(box)
作为列表理解。但是我的结果不一样。这就是我试过的。
all_boxes = [all_boxes.append(box[i]*s) for box in current_boxes for i in range(len(box))]
非常感谢任何帮助。
使用列表推导式时,您正在构建一个新列表。您不需要使用追加。
您也不需要使用带有列表索引和范围的交互器。
内部循环看起来像这样:
[value*s for value in box]
这里我们正在构建一个新列表,它是原始列表,每个项目乘以您的 s
变量。
现在,我们需要为您 current_boxes
中的每个框创建一个这样的列表。
执行此操作的外循环可能类似于:
[box for box in current_boxes]
合并时:
all_boxes = [[value*s for value in box] for box in current_boxes]
这应该可以解决问题
all_boxes =[list(map(lambda y : y*s, box)) for box in current_boxes]
我们正在使用内置的 python map() 函数,
它接受一个函数作为第一个参数,该函数应用于第二个可迭代参数(在我们的例子中是一个列表)的每个元素。
map() returns 是一个可迭代对象,因此我们将其转换为 'list' 以获得所需的结果。
这个'lambda y : y*s'函数也可以这样表示:
def mult_by_s(element):
element*s
all_boxes =[list(map(mult_by_s, box)) for box in current_boxes]
但它要求 's' 是全局的,所以我认为 lambda y : y*s 更合适。
还有一种方法是只使用map函数来解决问题
all_boxes =list(map(lambda box :list(map(lambda y : y*s, box)), current_boxes))
我试着写这个,其中 s 只是一个 int
for box in current_boxes:
for i in range(len(box)):
box[i] = box[i]*s
all_boxes.append(box)
作为列表理解。但是我的结果不一样。这就是我试过的。
all_boxes = [all_boxes.append(box[i]*s) for box in current_boxes for i in range(len(box))]
非常感谢任何帮助。
使用列表推导式时,您正在构建一个新列表。您不需要使用追加。
您也不需要使用带有列表索引和范围的交互器。
内部循环看起来像这样:
[value*s for value in box]
这里我们正在构建一个新列表,它是原始列表,每个项目乘以您的 s
变量。
现在,我们需要为您 current_boxes
中的每个框创建一个这样的列表。
执行此操作的外循环可能类似于:
[box for box in current_boxes]
合并时:
all_boxes = [[value*s for value in box] for box in current_boxes]
这应该可以解决问题
all_boxes =[list(map(lambda y : y*s, box)) for box in current_boxes]
我们正在使用内置的 python map() 函数, 它接受一个函数作为第一个参数,该函数应用于第二个可迭代参数(在我们的例子中是一个列表)的每个元素。 map() returns 是一个可迭代对象,因此我们将其转换为 'list' 以获得所需的结果。
这个'lambda y : y*s'函数也可以这样表示:
def mult_by_s(element):
element*s
all_boxes =[list(map(mult_by_s, box)) for box in current_boxes]
但它要求 's' 是全局的,所以我认为 lambda y : y*s 更合适。
还有一种方法是只使用map函数来解决问题
all_boxes =list(map(lambda box :list(map(lambda y : y*s, box)), current_boxes))