12讲python有两个小问题
[*]>>> old =
[*]>>> new = old
[*]>>> old =
[*]>>> print(new)
复制代码这个为什么不是墙头草跟着变类型的呀
https://xxx.ilovefishc.com/forum/201310/12/044035qddrqkmrqod4cqmr.png
>>> list3 = for slogan in list1 for name in list2 if slogan == name]
为什么slogan从2开始呀
为什么后面if只判断第0个呀
本帖最后由 Twilight6 于 2020-7-17 19:04 编辑
old = #第一次赋值
new = old #将old 赋值给new 这行代码就等价与new =
old = #这里你的old重新赋值,就会覆盖原本的old 变量,但是new 来源还是
print(new)
你可以这样做
old =
new = old #他们的根本来源都是
new.append(6)
print(old)
同理:
old =
new = old #他们的根本来源都是
old.append(6)
print(new)
python中 变量都有id (通俗说就是来源,id(new)可以查询new的id)
id相同 他们就相当于捆绑在一起了 其中一个改变 另一个也会随之改变就像 量子纠缠
而你后面是 old = 是重新给old 赋值 python 就会重新赋予他一个id 就和先前的id 不同 new id 还是原来的old = 时候的id
而 copy 也就是浅拷贝,相当于只拷贝列表本身,但是内部的可变元素并没有与之拷贝成新的
同理 列表的大部分方法(如 romove、pop、insert、append、sort等)都是在原列表上进行改变的,只改变本源,导致与其相关的都一起发生改变
_____________________________________________________________________________________________________________________________________
为什么slogan从2开始呀?
因为两个字符串都有编号 1.xxxx , 1.yyyy , 从图片打印结果看出来,甲鱼哥的要求是要把 name 和 slogan 两个拼接起来只保留一个字符串的效果
所以把后面那个编号如: 1. 去掉,所以切片 是从第三个字符开始到最后一个字符
为什么后面if只判断第0个呀?
因为这里图片打印的结果是相同编号的字符串拼接在一起呀,所以这里 if 是为了将编号相同的字符串进行拼接的条件
这里的字符串索引 就是索引出字符串第一个字符进行判断是否相等,相等才执行字符串的拼接操作
给你来波总体分析,之前写的,应该有助于你更加了解列表推导式的使用:
举几个例子吧(假设已经给出了列表 ls1,ls2):
temp =
最简单的列表推导式:将 遍历 ls1中的元素 依次赋值给 x 加入列表中去
可以分解成:
temp = []
for x in ls1:
temp.append(x)
temp =
将遍历ls1中的元素,将符合条件的元素加的列表中
可以分解成这样:temp = []
for x in ls1:
if <条件>:
temp.append(x)
temp =
将 x 遍历 ls1 中的元素,然后 i 遍历 ls2 的元素 将符合条件后的 x+i 的结果依次加入列表中
可以分解成这样:temp = []
for x in ls1:
for i in ls2:
if <条件>:
temp.append(x+i)
list3= for slogan in list1 for name in list2 if slogan == name]
所以你的这题可以分解成这样:
list3=[]
for slogan in list1:
for name in list2:
if slogan==name:
list3.append(name + ':'+ slogan)
这里的 slogan 就是把从第二个位置参数的字符到最后的字符留下,比如 1.耐克 ,就是把 耐克两个字符留下
只有当 slogan 的第一个字符 和 name 的第一个字符相等时候(也就是字符串开头的数字),满足题意,进行拼接
1. old = 这一句相当于将 old 赋值给另外一个列表,此时的 old 和 new 已经 “分道扬镳”,毫无关系了
2. 请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=171354 zltzlt 发表于 2020-7-17 19:02
1. old = 这一句相当于将 old 赋值给另外一个列表,此时的 old 和 new 已经 “分道扬镳”,毫无关系了
...
明白了,谢谢你啦 1904486494 发表于 2020-7-17 19:11
明白了,谢谢你啦
如果你的问题已解决,请设置【最佳答案】 Twilight6 发表于 2020-7-17 19:00
你可以这样做
谢谢,真详细!
页:
[1]