| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 sunql 于 2017-3-30 10:57 编辑  
 
list1=[1,3,5,6,7,2,] 
list3=list1 
list1.sort() 
list1和list3出来结果都是[1,2,3,5,6,7] 
 
如果我变成 
list1=1 
list3=list1 
list1=2 
那为什么list3不是等于2呢? 
 
 
还有12课中 
 
list3=[name +':'+slogan[2:] for slogan in list1 for name in list2 if slogan[0]==name[0]] 
 
我把他写成非列表推导式前 
 
list1=['4.adidas','2.李宁','3.fishc','1.耐克'] 
for name in list1: 
    print(name) 
 
 
为什么打印出来的结果是: 
4.adidas 
2.李宁 
3.fishc 
1.耐克 
 
不是应该在打印name[1] 这样,才会把里面列表中各个值打出来吗? 
 
为什么print(name) 就分着打出来了? 
这是两不同的问题吧。 
对于数组来说,赋值只是重新取个名字。只有用copy才是重新划分一个内存空间。 
所以list1和list3其实是指向同一个地址的。用id()可以直接查看内存地址。 
 
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> a = 1 
>>> b = 2 
>>> id(a) 
493508880 
>>> id(b) 
493508896 
>>> a = 3 
>>> id(a) 
493508912 
>>> id(b) 
493508896 
>>>  
 
 
 |   
 
 
 
 |