gpt4 book ai didi

python - 如何将列表附加到python中的列表?

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:06 24 4
gpt4 key购买 nike

现在我正在尝试创建一个带有两个参数的小函数,一个列表和在更改所述列表中的那些数字之前的限制。二维列表应该只返回 1 和 0。如果一个元素大于或等于限制,它将元素更改为 1,如果小于限制,它将变为 0。到目前为止,这就是我想出的:

def tempLocations(heatMat,tempMat):
newMat=[]
for i in heatMat:
for j in i: #j goes into the list within the list
if j >= tempMat: #if the element of j is greater than or equal to the limit of the matrix
j = 1 #it will turn the element into a 1
newMat.append(j)
else:
if j < tempMat:
j = 0
newMat.append(j)
print newMat


tempLocations([[12,45,33,22,34],[10,25,45,33,60]],30)

这在很大程度上做了我想要的,只是它创建了一个列表,将所有 1 和 0 放入其中。我试图让它保持 2D 列表样式,同时仍然更改列表中的值,以便我最终得到的不是 [0, 1, 1, 0, 1, 0, 0, 1, 1, 1] 而不是 [[0, 1, 1, 0, 1],[0, 0, 1, 1, 1]]。我该怎么做呢?任何帮助表示赞赏:)

最佳答案

有一个更简单的方法:

data = [[12,45,33,22,34],[10,25,45,33,60]]
mask = [[int(x > 30) for x in sub_list] for sub_list in data]

如果你想把它作为一个以阈值作为参数的函数:

def make_mask(thresh, data):
return [[int(x > thresh) for x in sub_list] for sub_list in data]

make_mask(30, data)

对于不想将 bool 结果转换为 int 的纯粹主义者(或者可能想要不同于 0 和 1 的值),这也很容易阅读:

[[1 if x > 30 else 0 for x in sub_list] for sub_list in data]

def make_mask(thresh, data, hi=1, lo=0):
return [[hi if x > thresh else lo for x in sub_list] for sub_list in data]

例如

In [97]: make_mask(30, data, "hot", "cold")
Out[97]: [['cold', 'hot', 'hot', 'cold', 'hot'], ['cold', 'cold', 'hot', 'hot', 'hot']]

关于python - 如何将列表附加到python中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26289424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com