我有一個清單x = [[2873, 5321, 5421], [2788, 5171, 5271], [2788, 5171, 5271]]。我想將y = 400, 添加到串列中的每個元素。輸出應該是z = [3273, 5721, 5821], 3188, 5571, 5671], [3188, 5571, 5671]]
我嘗試使用
def add(x,y):
addlists=[(x[i] y) for i in range(len(x))]
return addlists
z = add(x,y)
但這沒有用。
我也試過
def add(x,y):
addlists = [(x[i] [y]) for i in range(len(x))]
return addlists
z = add(x,y)
但這又回來了z = [[2873, 5321, 5421] 400, [2788, 5171, 5271] 400, [2788, 5171, 5271] 400]
uj5u.com熱心網友回復:
您可以使用list comprehensions.
>>> x = [[2873, 5321, 5421], [2788, 5171, 5271], [2788, 5171, 5271]]
>>> [[l 400 for l in lst] for lst in x]
[[3273, 5721, 5821], [3188, 5571, 5671], [3188, 5571, 5671]]
或者你的代碼可以是這樣的:
def add(x,y):
return [[l y for l in lst] for lst in x]
x = [[2873, 5321, 5421], [2788, 5171, 5271], [2788, 5171, 5271]]
y = 400
print(add(x,y))
uj5u.com熱心網友回復:
嘗試這個:
x = [[2873, 5321, 5421], [2788, 5171, 5271], [2788, 5171, 5271]]
y = 400
z = [[y each for each in eachlist] for eachlist in x]
print (z)
# result:
[[3273, 5721, 5821], [3188, 5571, 5671], [3188, 5571, 5671]]
uj5u.com熱心網友回復:
作為另一種方法,如果您想盡可能使用numpy,可以使用以下方法。
根據資料集的大小,這種方法可能會比使用嵌套回圈提供一些效率提升numpy,因為它采用一種稱為“廣播”的方法將給定操作應用于陣列中的每個值,而不是“傳統回圈”。
此外,這種方法可以很好地擴展,因為它可以靈活地適應串列的形狀。
例如:
import numpy as np
x = [[2873, 5321, 5421], [2788, 5171, 5271], [2788, 5171, 5271]]
a = np.array(x)
a 400
輸出:
array([[3273, 5721, 5821],
[3188, 5571, 5671],
[3188, 5571, 5671]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532043.html
標籤:Python列表功能添加
