鱼C论坛

 找回密码
 立即注册
查看: 1441|回复: 8

[已解决]求问这个是怎么回事?

[复制链接]
发表于 2017-9-26 08:26:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #------------列表推导式--------#
  2. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
  4. list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
复制代码
  1. for each in list3:
  2.     print(each)
复制代码


如果我把上面这个程序改成下面的代码的话,程序运行结果就不对。
运行结果如图。
求问各位大佬,正确改写list3是怎样的?


  1. #------------列表推导式--------#
  2. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
  4. for slogan in list1:
  5.     for name in list2:
  6.         if slogan[0] == name[0]:
  7.             list3 = name + ':' + slogan[2:]
  8. for each in list3:
  9.     print(each)
复制代码
最佳答案
2017-9-26 08:56:29
需要先定义一个空列表,
  1. #------------列表推导式--------#
  2. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
  4. list3 = []
  5. for slogan in list1:
  6.     for name in list2:
  7.         if slogan[0] == name[0]:
  8.             list3.append(name + ':' + slogan[2:])
  9. for i in list3:
  10.     print(i)
复制代码
TIM截图20170926082459.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-26 08:45:15 | 显示全部楼层
你的程序list3变成了字符串,用for循环遍历,则是取每个字符。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-26 08:56:29 | 显示全部楼层    本楼为最佳答案   
需要先定义一个空列表,
  1. #------------列表推导式--------#
  2. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
  4. list3 = []
  5. for slogan in list1:
  6.     for name in list2:
  7.         if slogan[0] == name[0]:
  8.             list3.append(name + ':' + slogan[2:])
  9. for i in list3:
  10.     print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-26 09:10:01 | 显示全部楼层
sunnychou 发表于 2017-9-26 08:56
需要先定义一个空列表,

还想请问一下 为什么slogan[0]的值是4呢?
就是当我输入
  1. >>> for slogan in list1:
  2.         print(slogan)
复制代码


运行出来的结果是'4',这是为什么呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-26 09:16:59 | 显示全部楼层
阿撩 发表于 2017-9-26 09:10
还想请问一下 为什么slogan[0]的值是4呢?
就是当我输入

这个只是切片,他说的是列表里面字符串,当他的字符串里面第一个位置是相同的时候,组合起来,不是说的列表下标,如果说下标的话,第一个下标是 指的元素是‘4.阿迪达斯’,你把元素打印出来,就懂了,你再看一下这个
  1. #------------列表推导式--------#
  2. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
  4. list3 = []
  5. for slogan in list1:
  6.     for name in list2:
  7.         if slogan[0] == name[0]:
  8.             print(name[2])
  9.             list3.append(name + ':' + slogan)
  10. for i in list3:
  11.     print(i)
复制代码


把那个slogan[2:],删掉后面的,结果是这样的,
输出结果




  1. 1.耐克:1.Just do It
  2. 2.李宁:2.一切皆有可能
  3. 3.鱼c工作室:3.让编程改变世界
  4. 4.阿迪达斯:4.Impossible is Nothing
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-26 09:40:26 | 显示全部楼层
sunnychou 发表于 2017-9-26 09:16
这个只是切片,他说的是列表里面字符串,当他的字符串里面第一个位置是相同的时候,组合起来,不是说的列 ...

嗯嗯 我懂了
for slogan in list1:
      print(slogan)
slogan[0]出现'4' 是不是因为进行for循环后slogan最后的值4.Impossible is Nothing,所以当取slogan[0]的时候就是这个字符串的第一个位置的值?就是'4'?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-26 21:01:22 | 显示全部楼层
阿撩 发表于 2017-9-26 09:40
嗯嗯 我懂了
for slogan in list1:
      print(slogan)

是的,是字符串的第一个位置
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-27 08:14:47 | 显示全部楼层
sunnychou 发表于 2017-9-26 21:01
是的,是字符串的第一个位置

嗯嗯 谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-27 08:49:10 | 显示全部楼层

不客气,多交流
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 16:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表