微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python等价于php的foreach$ array as $ key =>&$ value

如何解决Python等价于php的foreach$ array as $ key =>&$ value

| 是否有与此PHP表示法等效的方法,可以更改原始数组(请注意引用运算符)?
// increase value of all items by 1
foreach ($array as $k => &$v) {
    $v++;
}
我只知道这种方式,这不是那么优雅:
for i in range(len(array)):
    array[i] += 1 
    

解决方法

您可以使用列表理解:
newArray = [i + 1 for i in array]
    ,在列表上调用内置的“ 3”函数时,它将返回一个可以迭代的对象,并返回一个计数和从列表返回的值。
for i,val in enumerate(array):
    array[i] += 1
    ,关于参考。 在python中,每个值都是对象,每个\'variable \'都是对该对象的引用。分配从不复制值,它始终分配引用。 因此,默认情况下,
for k,v in enumerate([1,2,3])
中的v也是参考。但是,大多数基本\ types对象都是不可变的,因此,当您执行
immutable_object_reference += 1
时,将创建
int
的新实例,并将
immutable_object_reference
更改为指向新实例。 当我们的值是可变类型时,引用的工作方式与PHP中的相同:
>>> class mutable_pseudoint(object):
...     def __init__(self,d):
...         self.d = d
...     def __iadd__(self,v):
...         self.d += v
...     def __repr__(self):
...         return self.d.__repr__()
...     def __str__(self):
...         return self.d.__str__()
... 
>>> l = [mutable_pseudoint(1),mutable_pseudoint(2),mutable_pseudoint(3),mutable_pseudoint(4)]
>>> l
[1,3,4]
>>> for k,v in enumerate(l):
...     v += 1
... 
>>> l
[2,4,5]
    ,我不知道能够获得指向列表项的指针,但是http://effbot.org/zone/python-list.htm展示了一种通过索引访问的更干净的方法:
for index,object in enumerate(L):
    L[index] = object+1
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。