本文将为您提供关于Python:为什么在我实际上不更改列表时会更改它?的详细介绍,我们还将为您解释python修改列表元素需要指定的相关知识,同时,我们还将为您提供关于AngularJS:为什么在您离
本文将为您提供关于Python:为什么在我实际上不更改列表时会更改它?的详细介绍,我们还将为您解释python修改列表元素需要指定的相关知识,同时,我们还将为您提供关于AngularJS:为什么在您离开当前摘要之前$http实际上不会发出http请求?、c# – 如果匿名类型应该是不可变的,为什么可以更改它?、Python - 根据索引更改列表中的多个元素、Python DataFrame设置/更改列表字段/元素类型的方法的实用信息。
本文目录一览:- Python:为什么在我实际上不更改列表时会更改它?(python修改列表元素需要指定)
- AngularJS:为什么在您离开当前摘要之前$http实际上不会发出http请求?
- c# – 如果匿名类型应该是不可变的,为什么可以更改它?
- Python - 根据索引更改列表中的多个元素
- Python DataFrame设置/更改列表字段/元素类型的方法
Python:为什么在我实际上不更改列表时会更改它?(python修改列表元素需要指定)
新手有问题,请保持温柔:
list = [1, 2, 3, 4, 5]list2 = listdef fxn(list,list2): for number in list: print(number) print(list) list2.remove(number) print("after remove list is ", list, " and list 2 is ", list2) return list, list2list, list2 = fxn(list, list2)print("after fxn list is ", list)print("after fxn list2 is ", list2)
结果是:
1[1, 2, 3, 4, 5]after remove list is [2, 3, 4, 5] and list 2 is [2, 3, 4, 5]3[2, 3, 4, 5]after remove list is [2, 4, 5] and list 2 is [2, 4, 5]5[2, 4, 5]after remove list is [2, 4] and list 2 is [2, 4]after fxn list is [2, 4]after fxn list2 is [2, 4]
我不明白为什么列表改变时,我只是在做list2.remove()
,没有list.remove()
。我什至不知道要用什么搜索词来弄清楚。
答案1
小编典典这是因为在进行分配后,list
和list2
都引用相同的列表list2=list
。
尝试执行以下操作以查看它们是指相同的对象还是不同的对象:
id(list)id(list2)
一个例子:
>>> list = [1, 2, 3, 4, 5]>>> list2 = list>>> id(list)140496700844944>>> id(list2)140496700844944>>> list.remove(3)>>> list[1, 2, 4, 5]>>> list2[1, 2, 4, 5]
如果您确实要创建这样的重复副本,list
而list2
不是引用原始列表,而是引用列表的副本,请使用slice运算符:
list2 = list[:]
一个例子:
>>> list[1, 2, 4, 5]>>> list2[1, 2, 4, 5]>>> list = [1, 2, 3, 4, 5]>>> list2 = list[:]>>> id(list)140496701034792>>> id(list2)140496701034864>>> list.remove(3)>>> list[1, 2, 4, 5]>>> list2[1, 2, 3, 4, 5]
另外,请勿将其list
用作变量名,因为最初list
是指类型列表,但是通过定义自己的list
变量,您将隐藏list
引用类型列表的原始变量。例:
>>> list<type ''list''>>>> type(list)<type ''type''>>>> list = [1, 2, 3, 4, 5]>>> list[1, 2, 3, 4, 5]>>> type(list)<type ''list''>
AngularJS:为什么在您离开当前摘要之前$http实际上不会发出http请求?
我只是想知道它为什么不立即发出HTTP请求?这似乎是一个不必要的要求,我想知道我错过了什么.
更新:有人建议这是必要的,因为完成处理程序将需要更新摘要.但是,这些完成事件需要在以后的任何一种情况下进行自己的$apply / $digest调用.
解决方法
c# – 如果匿名类型应该是不可变的,为什么可以更改它?
string[] arr = { "Agnes","Allan","Benny" }; var result = arr.Where(a => a.StartsWith("A")).Select(a => a); // Why can I do the below,if arr is immutable? result = arr.Where(a => a.EndsWith("n")).Select(a => a);
我不明白为什么我被允许为结果分配第二个值.我的意思是不是匿名类型是不可变的,它们在获得初始值后无法更改?
@R_301_5609@
这个字符串[] arr = {“Agnes”,“Allan”,“Benny”};是array creation expression.
结果是IEnumerable< string>在两个LINQ语句中,您只是创建一个查询.
这是怎么回事:
数组创建表达式
string[] arr = { "Agnes","Benny" };
query arr并返回IEnumerable< string>
var result = arr.Where(a => a.StartsWith("A")).Select(a => a);
在arr上为结果分配一个新查询,返回IEnumerable< string>
result = arr.Where(a => a.EndsWith("n")).Select(a => a);
至于理解不变性,想想String也会看到这篇文章:Immutable types: understand their benefits and use them
Python - 根据索引更改列表中的多个元素
如果您有一个索引列表,并且您有 x
,您可以遍历并更新相应索引处的值:
rt = [10,20,30,40]
rtInd = [2,3]
x = 10
for i in rtInd:
rt[i] += x
# result:
# rt = [10,40,50]
,
如果 rt
是 numpy
数组,您可以使用索引本身的 list
(或 numpy.array
)进行索引(必须不是一个 tuple
,要清楚,因为 tuple
用于多维访问,而不是一组要修改的索引):
# Setup
rt = numpy.array([10,40],dtype=np.int64)
rtInd = [2,3] # Or numpy.array([2,3])
x = 123 # Arbitrary value picked
# Actual work
rt[rtInd] += x
这会将工作推送到 numpy
内的单个操作(可能会提高性能)。
也就是说,numpy
是一个非常重量级的依赖项;如果您还没有依赖 numpy
,我会坚持使用 M Z's answer 中描述的简单循环。
Python DataFrame设置/更改列表字段/元素类型的方法
Python DataFrame 如何设置列表字段/元素类型?
比如笔者想将列表的两个字段由float64设置为int64,那么就要用到DataFrame的astype属性,举例如图:
该例列表为“m_pred_survived”字段为“PassengerId”及“Survived”,设置为int64类型,最后可以输出检验下是否正确。
m_pred_survived = pd.DataFrame(columns=['PassengerId','Survived'])
以上这篇Python DataFrame设置/更改列表字段/元素类型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。
我们今天的关于Python:为什么在我实际上不更改列表时会更改它?和python修改列表元素需要指定的分享就到这里,谢谢您的阅读,如果想了解更多关于AngularJS:为什么在您离开当前摘要之前$http实际上不会发出http请求?、c# – 如果匿名类型应该是不可变的,为什么可以更改它?、Python - 根据索引更改列表中的多个元素、Python DataFrame设置/更改列表字段/元素类型的方法的相关信息,可以在本站进行搜索。
本文标签: