加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何加倍列表中的所有值

发布时间:2020-12-20 12:22:48 所属栏目:Python 来源:网络整理
导读:n = [3,5,7]def double(lst): for x in lst: x *= 2 print x return lstprint double(n) 为什么不返回n = [6,10,14]? 还应该有一个更好的解决方案,看起来像[x * = 2 for x in lst],但它也不起作用. 关于for循环和列表的任何其他提示将非常感激. 解决方法 Wh
n = [3,5,7]

def double(lst):
    for x in lst:
        x *= 2
        print x
    return lst

print double(n)

为什么不返回n = [6,10,14]?

还应该有一个更好的解决方案,看起来像[x * = 2 for x in lst],但它也不起作用.

关于for循环和列表的任何其他提示将非常感激.

解决方法

Why doesn’t this return n = [6,14]?

因为在double中调用的n或lst永远不会被修改.对于数字x,x * = 2相当于x = x * 2,并且只重新绑定名称x而不更改它引用的对象.

要查看此内容,请按如下方式修改double:

def double(lst):
    for i,x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i,lst[i]))

要在适当位置更改数字列表,您必须重新分配其元素:

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2

如果您不想就地修改它,请使用理解:

def double(lst):
    return [x * 2 for x in lst]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读