首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过最大值函数赋值时变量值的变化

通过最大值函数赋值时变量值的变化
EN

Stack Overflow用户
提问于 2019-11-26 09:10:59
回答 2查看 282关注 0票数 0

这是一个相对简单的问题,要从嵌套列表中列出具有最大值的元素。

所以我做了这个功能,

attribute

  • replaces

  • 查找具有最大的元素,最大属性为0
  1. 查找使用max
  2. 元素的元素。

在这样做的时候,我被困在第二步,从那时起我就一直呆在那里。

以下是功能:

代码语言:javascript
复制
def secondMax(data):
    x = max(data, key=lambda x:x[1])

    for i in range(0, len(data)):
        if(data[i][1] == x[1]):
            data[i][1] = 0
            print(x) #             prints ['yash',0]
    print(x) #                     prints ['yash',0]
    return data

当我运行代码时,这是输出

运行

代码语言:javascript
复制
# data being fed
data = [['yash', 5.0], ['akash', 5.0], ['harsh', 3.0], ['dj', 4.0], ['ashutosh', 4.0]]
secondMax(data)

输出

代码语言:javascript
复制
# output 
['yash', 0]
['yash', 0]
[['yash', 0], ['akash', 5.0], ['harsh', 3.0], ['dj', 4.0], ['ashutosh', 4.0]]

现在,为什么没有将第二个元素(akash,5.0)设置为(akash,0)?据我所知,x的值不应该改变(它正在改变)并导致这一点。

为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

发布于 2019-11-26 09:41:16

看起来像

代码语言:javascript
复制
x = max(data, key=lambda x:x[1])

返回对最大元素的引用。因此,当您在第一次迭代期间将其值设置为零时

代码语言:javascript
复制
        if(data[i][1] == x[1]):
            data[i][1] = 0

实际上,您正在更改用于比较的值。从现在起,x1将为零。因此,基本上'akash'不匹配,因为您正在将其值5.0与0.0进行比较,后者显然返回False

票数 1
EN

Stack Overflow用户

发布于 2019-11-26 09:17:51

下面的代码中的max_user引用同一个对象,即data中的nested list。当我们更改嵌套列表的内部值时,它也会反映在我们的max_user中(因为它引用的是同一个对象,而不是内部值)。

因此,我采用了一个.copy() of max_user,并使用它进行比较。

稍加修改,您就可以在循环中遍历列表并访问它,而不需要使用range

代码语言:javascript
复制
>>> def secondMax(data):
    max_user = max(data, key=lambda x:x[1])
    _temp = max_user.copy()

    for user in data:

        if user[1] == _temp[1]:
            user[1] = 0
            print(_temp)
    print(_temp)
    return data

输出:

代码语言:javascript
复制
>>> secondMax(data)
['yash', 5.0]
['yash', 5.0]
['yash', 5.0]
[['yash', 0], ['akash', 0], ['harsh', 3.0], ['dj', 4.0], ['ashutosh', 4.0]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59047333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档