|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- >>> old = [1, 2, 3, 4, 5]
- >>> new = old
- >>> old = [6]
- >>> print(new)
[color=rgb(51, 102, 153) !important]复制代码这个为什么不是墙头草跟着变类型的呀
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
为什么slogan从2开始呀
为什么后面if只判断第0个呀
[color=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]
本帖最后由 Twilight6 于 2020-7-17 19:04 编辑
[b]
old = [1, 2, 3, 4, 5] #第一次赋值
new = old #将old 赋值给new 这行代码就等价与 new = [1,2,3,4,5]
old = [6] #这里你的old重新赋值,就会覆盖原本的old 变量,但是new 来源还是[1,2,3,4,5]
print(new)
你可以这样做old = [1,2,3,4,5]
new = old #他们的根本来源都是[1,2,3,4,5]
new.append(6)
print(old)
[1,2,3,4,5,6]
同理:old = [1,2,3,4,5]
new = old #他们的根本来源都是[1,2,3,4,5]
old.append(6)
print(new)
[1,2,3,4,5,6]
python中 变量都有id (通俗说就是来源,id(new)可以查询new的id)
id相同 他们就相当于捆绑在一起了 其中一个改变 另一个也会随之改变 就像 量子纠缠
而你后面是 old = [6] 是重新给old 赋值 python 就会重新赋予他一个id 就和先前的id 不同 new id 还是原来的old = [1,2,3,4,5] 时候的id
而 copy 也就是浅拷贝,相当于只拷贝列表本身,但是内部的可变元素并没有与之拷贝成新的
同理 列表的大部分方法(如 romove、pop、insert、append、sort等)都是在原列表上进行改变的,只改变本源,导致与其相关的都一起发生改变
_____________________________________________________________________________________________________________________________________
因为两个字符串都有编号 1.xxxx , 1.yyyy , 从图片打印结果看出来,甲鱼哥的 要求是要把 name 和 slogan 两个拼接起来只保留一个字符串的效果
所以把后面那个编号如: 1. 去掉,所以切片 [2:] 是从第三个字符开始到最后一个字符
因为这里图片打印的结果是相同编号的字符串拼接在一起呀,所以这里 if 是为了 将编号相同的字符串进行拼接的条件
这里的 字符串索引 [0] 就是索引出字符串第一个字符进行判断是否相等,相等才执行字符串的拼接操作
给你来波 总体分析, 之前写的,应该有助于你更加了解列表推导式的使用:
举几个例子吧(假设已经给出了列表 ls1,ls2):最简单的列表推导式:将 遍历 ls1中的元素 依次赋值给 x 加入列表中去
可以分解成:temp = []
for x in ls1:
temp.append(x)
temp = [x for x in ls1 if <条件>]
将遍历ls1中的元素,将符合条件的元素加的列表中
可以分解成这样:temp = []
for x in ls1:
if <条件>:
temp.append(x)
temp = [x+i for x in ls1 for i in ls2 if <条件>]
将 x 遍历 ls1 中的元素,然后 i 遍历 ls2 的元素 将符合条件后的 x+i 的结果依次加入列表中
可以分解成这样:temp = []
for x in ls1:
for i in ls2:
if <条件>:
temp.append(x+i)
list3=[name+':'+slogan[2:0] for slogan in list1 for name in list2 if slogan[0] == name[0]]
所以你的这题可以分解成这样:list3=[]
for slogan in list1:
for name in list2:
if slogan[0]==name[0]:
list3.append(name + ':'+ slogan[2:])
这里的 slogan[2:] 就是把从第二个位置参数的字符到最后的字符留下,比如 1.耐克 ,就是把 耐克两个字符留下
只有当 slogan 的第一个字符 和 name 的第一个字符相等时候(也就是字符串开头的数字),满足题意,进行拼接
[/b]
|
|