|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 huo1234 于 2020-3-11 01:12 编辑
正在跟小甲鱼的教程,做到第十二课作业的时候遇到一个问题。
问题在下方附图
小甲鱼答案如下:
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
因为没有很理解这段代码的意思,所以试着分解了一下,我的代码如下(懒得打字,把问题变成了字母的大小写对应):
list1 = ['1.a','2.b','3.c','4.d']
list2 = ['4.D','3.C','2.B','1.A']
slogan = []
name = []
list3 = []
for slogan in list1:
for name in list2:
if slogan[0] == name[0]:
list3.append((name + ":" + slogan))
print(list3)
问题:
1.还是没有完全理解小甲鱼的代码
2.我的代码实现的时候会出现两个序号
感谢各位巨佬!!帮助
- list1 = ['1.a','2.b','3.c','4.d']
- list2 = ['4.D','3.C','2.B','1.A']
- # slogan和name在for循环里会自动赋值,不需要提前赋值
- list3 = []
- for slogan in list1:
- for name in list2:
- if slogan[0] == name[0]:
- list3.append((name + ":" + slogan[2:])) #你打印出来两个序号问题就出在这里
- #比如第一次循环时,slogan指向'1.a',我们只需要打印出来a就好,所以这里利用切片切出a,相当于'1.a'[2:]
复制代码- list3 = [name + ':' + slogan[2:]\
- #这里把后面slogan和name指向的元素返回列表中,slogan中的元素不需要序号,所以从2号位置切片
- for slogan in list1 for name in list2\
- #这里通过slogan和name分别遍历list1和list2中的元素
- if slogan[0] == name[0]]
- #当slogan和name指向的目标的0号位置元素相同,返回slogan和name到前面的函数中
- #例如第一次遍历时,slogan = '1.a' name = '4.a',0号位置分别为'1'和'4',不相等,则不返回,name指向下一个
复制代码
|
-
|