在python中乘以一个列表 - 对练习的问题感到困惑



"给定一个数字列表和一个因子(也是一个数字(,创建一个新列表,由列表中的每个数字乘以因子组成"

然后打印新列表。

我几乎肯定的不是他们想要如何完成练习,我只是对这个问题有点困惑。 我不确定他们是否想说出我在 for 循环中工作的另一个变量,或者什么。 解释会很好。:)

我的代码:

numbers = [3, 4, 16, 12, -1]
empty_list=[]
for i in numbers: 
empty_list.append(i * 3)
print (empty_list)

似乎您的解决方案绝对没问题,无论如何,这里有几种不同的可能方法来解决该问题。

1 - 循环,就像你所做的那样:

def multiply_lst_1(lst,n):
new_lst = []
for val in lst:
new_lst.append(val * n)
print(new_lst)
return new_lst

2 - 列表理解:

def multiply_lst_2(lst,n):
new_lst = [n * val for val in lst]
print(new_lst)
return new_lst

3 - 地图:

def multiply_list_3(lst,n):
new_lst = list(map(lambda x: n * x, lst))
print(new_lst)
return new_lst

列表理解是解决问题的更好方法,而不是使用结构化的 for 循环,即

newlist = [i * factor for i in original_list]

优于

for i in original_list:
newlist.append(i * factor)

此外,熊猫可以用来解决这个问题,因为

n = pandas.Series(original_list)
newlist = (s * factor).tolist()

Numpy也可以用于此

lis = numpy.array(original_list)
newlist = lis * factor

你也可以在这里使用 map(( 函数

newlist = list(map((factor).__mul__, original_list))