首页 > 解决方案 > 在不使用python中的库的情况下,将两个不同大小的元素列表相乘

问题描述

#create a simple list in python
#list comprehension
x = [i for i in range(100)]
print (x)

#using loops
squares = []
for x in range(10):
    squares.append(x**2)

print (squares)

multiples = k*[z for z in x] for k in squares

所以在最后一行代码中,我试图将两个列表相乘。问题是列表不在同一侧,并且 k*[z for z in x] 这部分也不正确。

标签: python

解决方案


我不太明白所需的输出是什么。就现在的函数而言,您将拥有一个列表列表,其中第一个元素有 100 个元素,第二个元素有 400 个元素,第三个元素有 900 个元素,以此类推。

  • 有一点很奇怪:表达式[z for z in x]定义了一个与 x 相同的列表。所以,你可能只是写k*x
  • 如果要将两个列表的元素相乘,则必须编写[[k*z for z in x] for k in squares]. 这将导致包含 100 个元素(或 10x100 矩阵)的 10 个列表的列表,其中包含列表的产品。
  • 如果您希望最后有一份长度为 100 的列表包含某种产品,您将不得不考虑如何处理较短的列表。
  • 编辑:或者,如果您想尽可能地将它们相乘,直到到达较短列表的末尾,FRANCOIS CYRIL 的解决方案是一种优雅的方式。

推荐阅读