|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第0题
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
为什么会打印:[1,2,3,4,5]
而不是:[6]???
如果 old.reverse(),结果就会变成:[5,4,3,2,1]
为什么????难道只有用了列表内BIF才会跟着变吗?这是为什么?
最后一题:
>>> list1 = ['1.Jost do It','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
>>> list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
>>> for each in list3:
print(each)
1.耐克:Jost do It
2.李宁:一切皆有可能
3.鱼C工作室:让编程改变世界
4.阿迪达斯:Impossible is Nothing
问题:
首先什么叫列表推导式,谁能简单的解释下吗?
第三条编程 list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
真的是一点都看不懂,谁能一一解释下吗?
一个对象给另一个赋值,两个指向一个内存区域,一个变化了,
那个变化的就指向其他区域,所以new是[1,2,3,4,5]
old.reverse()之后,old指向位置不变,只是改变了内存的内容
列表推导式:理解成一种集合了变换和筛选功能的函数,通过这个函数把一个列表转换成另一个列表。注意是另一个新列表,原列表保持不变。类似于中学学的函数值域
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]之中
name + ':' + slogan[2:]是为了按目标形式显示出来
如1.耐克:Jost do It,把序号,:,和列表1的元素(注意要去掉字符串和‘.’,所以用[2:])
for slogan in list1 for name in list2是列表推导式决定slogan和name的遍历范围,可理解为定义域,
而 if slogan[0] == name[0]条件只让list1,list2序号相同的显示出来
|
|