马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 collick 于 2018-12-24 15:04 编辑 print('-------by xiaojiayu-------')
list20 = ['1.Just do it', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
list21 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
list22 = [name + ':' + slogan[2:] for slogan in list20 for name in list21 if slogan[0] == name[0]]
for each in list22:
print(each)
-------by xiaojiayu-------
1.耐克:Just do it
2.李宁:一切皆有可能
3.鱼C工作室:让编程改变世界
4.阿迪达斯:Impossible is Nothing
代码是如何去掉列表list20中的 "1. 2. 3. 4. "的?
看了半天没搞明白!
+++++++++++++++++感谢各位的帮助!++++++++++++++++++++++++++
感谢各位的回复,以及在搜索引擎的搜索,个人如下理解(再次感谢heidern0612):
条件翻译及解析:
list20 = ['1.Just do it', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
list21 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
for slogan in list20:
for name in list21:
if slogan[0] == name[0]:
print(name + ':' + slogan[2:])
这里需要注意slogan[0] name[0] slogan[2:] :
slogan[0]是遍历list20列表中的元素,这个元素再次变成了一个新的列表,然后取slogan这个列表中的第一个元素与name[0]这个新列表中的第一个元素进行比对;
name[0]是遍历list21列表中的元素,这个元素再次变成了一个新的列表,然后取name这个列表中的第一个元素与slogan[0]这个新列表中的第一元素进行比对;
slogan[2:]是遍历list20列表中的元素,然后对新的列表进行切片取([0,1,2,3,....])2(包含)之后的所有元素
我这样解释是否正确?
""")
本帖最后由 heidern0612 于 2018-12-23 09:46 编辑
要看懂这个首先你要明白list22中的列表引导式表达的意义。
list22 = [name + ':' + slogan[2:] for slogan in list20 for name in list21 if slogan[0] == name[0]]
首先看 for slogan in list20 和 for name in list21两句,
这两个句比较简单,就是个二维的列表遍历,遍历了两个列表中的每一个元素。
(二维的的列表遍历可以想象下班级座位,每一行每一排,也可以参考佳宇老师那个摸三色球的问题。)
下面一句if slogan[0] == name[0]的话,(也就是两个列表中每个元素的第0个索引值结果相等的话(每个元素中开头的"0"、“1”“2”之类的)),
if这个作用其实就是判断两个列表中每个元素中开头字符是否相等。
将name + ':' + slogan[2:]append进list22列表。(name这里指的是list21中的每个元素,slogan这里指的是list20中的每个元素)
slogan[2:]指的是slogan去掉前面两个元素之后的所有内容。例如"1.Just do it'",去掉头两个元素结果就是“Just do it ”.
上面理解了之后,下面for循环打印list22中的每个元素就比较好理解了。
|