2024-09-22 16:30:12 发布
网友
有没有办法用Hy中的索引替换list或dictionary元素的值? nth函数似乎与Python的方括号不对应。你知道吗
nth
我原以为你会喜欢下面的翻译。你知道吗
(setv lst [1 2 3]) (setv (nth lst 1) 20) lst=[1, 2, 3] lst[1]=20
除了assoc,Hy还可以在get特殊形式上使用setv,或者在.形式上使用[]语法设置索引或键。你知道吗
assoc
get
setv
.
[]
$ hy spy # Shows Python translation. [...] => (setv lst [1 2 3]) lst = [1, 2, 3] None => (setv (. lst[1]) 20) lst[1] = 20 None => lst lst [1, 20, 3] => (setv (get lst 2) 30) lst[2] = 30 None => lst lst [1, 20, 30]
当然,这些操作符最终由__setitem__方法支持,您可以像调用任何其他方法一样调用它。你知道吗
__setitem__
=> (.__setitem__ lst 0 10) lst.__setitem__(0, 10) => lst lst [10, 20, 30]
直接使用__setitem__并不比前面提到的其他形式更可取,但它有时在高阶函数中很有用。你知道吗
根据the documentation,必须使用assoc函数在列表中的特定索引处设置值。因此,您的代码应该是:
(assoc lst 1 20)
这应该会产生预期的结果。你知道吗
除了
assoc
,Hy还可以在get
特殊形式上使用setv
,或者在.
形式上使用[]
语法设置索引或键。你知道吗当然,这些操作符最终由
__setitem__
方法支持,您可以像调用任何其他方法一样调用它。你知道吗直接使用
__setitem__
并不比前面提到的其他形式更可取,但它有时在高阶函数中很有用。你知道吗根据the documentation,必须使用
assoc
函数在列表中的特定索引处设置值。因此,您的代码应该是:这应该会产生预期的结果。你知道吗
相关问题 更多 >
编程相关推荐