我想将2D列表中的一个元素乘以整数。但是,一旦我执行代码,我得到以下内容:我期望结果只是一个元组,而不是一个列表,并希望它是一个元组而不是列表。
[3, 3, 3]
[6, 6, 3, 3, 3, 3]
这是我的代码:
list = [[0.5],[0.3],[0.1]]
def funcOne(juv):
newAd = juv * list[0]
return newAd
def funcTwo(ad,sen):
newSen = (ad* list[1]) + (sen* list[2])
return newSen
print(funcOne(3))
print(funcTwo(2,4))
我想要的funcOne输出是3 * 0.5 = 1.5 ,其中" 0.5"是列表[0]。我不确定如何编辑我的代码以实现这一结果。
答案 0 :(得分:2)
实际上,我仍然对你对预期输出的解释感到困惑。我只是运行你的代码输出如下:
[0.5, 0.5, 0.5]
[0.3, 0.3, 0.1, 0.1, 0.1, 0.1]
你的函数返回列表而不是乘以2d矩阵中的一个元素的原因是你以错误的方式使用2d矩阵中元素的索引。 这是你的代码:
list = [[0.5],[0.3],[0.1]]
def funcOne(juv):
newAd = juv * list[0]
return newAd
def funcTwo(ad,sen):
newSen = (ad* list[1]) + (sen* list[2])
return newSen
print(funcOne(3))
print(funcTwo(2,4))
在您的代码中,当您在函数juv * list[0]
中使用funcOne
时,它实际执行为3 * [0.5]
,其中[0.5]
是第二个矩阵的第一个元素(列表)。您可以在Python解释器中运行,并发现3 * [0.5]
的结果是[0.5, 0.5, 0.5]
,这意味着它只是复制列表中的元素三次。
如果您想计算[[0.5 * 3], [0.3], [0.1]]
,请更改以下代码:
def funcOne(juv):
newAd = juv * list[0][0]
return newAd
def funcTwo(ad,sen):
newSen = (ad* list[1][0]) + (sen* list[2][0])
return newSen
----------更新
如果您想返回[[1.5], [0.3], [0.1]]
之类的列表。将代码更改为
def funcOne(juv):
list[0][0] = juv * list[0][0]
return list
希望它有所帮助。
答案 1 :(得分:0)
只需将list
转换为tuple
:
def funcOne(juv):
newAd = juv * list[0]
return tuple(newAd) # convert to tuple
同样适用于funcTwo
。
然后,要重现您想要的输出用途:
>>> list = [[3], [6], [3]]
>>> print(funcOne(3))
(3, 3, 3)
>>> print(funcTwo(2, 4))
(6, 6, 3, 3, 3, 3)