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循环和列表的任何其他提示将非常感激. 解决方法
因为在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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |