鱼C论坛

 找回密码
 立即注册
查看: 1231|回复: 7

[已解决]一个小而细的问题求助

[复制链接]
发表于 2018-2-28 13:07:03 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
def fun(lst):
    result = ["  1月  2月  3月  4月  5月  6月  7月  8月  9月  10月 11月 12月",
              "------------------------------------------------------------"]
    for i in range(max(lst)):
        stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)
        result.append("| " + stats)
    return "\n".join(result[::-1])
其中的stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)这个应该怎么理解,大佬能帮忙详细的分析一下嘛

第二个问题是如果for循环在while循环中,或者for循环在for循环中,是把内部的先循环结束再循环外部吗?
比如说:while True:
                       for …… in ……:
或者 for …… in ……:
              list = [……for …… in ……]
求大佬帮助分析一下,谢谢
最佳答案
2018-2-28 13:25:17
stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)
这句其实就是将表中需要的数据取出来给stats

嵌套循环都是先执行里面的循环,再执行外部循环
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-28 13:25:17 | 显示全部楼层    本楼为最佳答案   
stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)
这句其实就是将表中需要的数据取出来给stats

嵌套循环都是先执行里面的循环,再执行外部循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 14:04:38 From FishC Mobile | 显示全部楼层
BngThea 发表于 2018-2-28 13:25
stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)
这句其实就是将表中需要的数据取出来 ...

那个[-5]分片代表着什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 14:16:50 | 显示全部楼层
皮皮小发 发表于 2018-2-28 14:04
那个[-5]分片代表着什么


字符串也支持切片操作啊
比如 a="goodday"
a[-3:]表示从倒数第三个字符到最后,也就是"day"
所以[-5:]就是去除字符串的从倒数第5个字符到结尾处
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 14:21:49 From FishC Mobile | 显示全部楼层
BngThea 发表于 2018-2-28 14:16
字符串也支持切片操作啊
比如 a="goodday"
a[-3:]表示从倒数第三个字符到最后,也就是"day"

我理解分片的意思,但我不明白这一段话代表什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 16:18:10 | 显示全部楼层
  1. #这函数干嘛用的?
  2. def fun(lst):
  3.     result = ["  1月  2月  3月  4月  5月  6月  7月  8月  9月  10月 11月 12月",
  4.               "------------------------------------------------------------"]
  5.     for i in range(max(lst)):#max返回给定参数的最大值
  6.         stats = "".join((((j-i)*"*" or " ") + "    ")[-5:] for j in lst)#(j - i#这是一个减法,紧接着括号外面是一个乘法,如果(j - i)判断是True,乘以'*',False乘以' '这个空格,
  7.                                                                         #[-5:]从倒数第五个字符开始到最后一个字符,(for j in lst)对j进行定义的,你把这个删掉再运行函数,就会报错
  8.                                                                         #(NameError: name 'j' is not defined)这个错误意思是:'j'没有进行定义
  9.         result.append("| " + stats),
  10.     return "\n".join(result[::-1])
复制代码

说的不是很好,见谅
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 16:19:36 | 显示全部楼层
忽视 发表于 2018-2-28 16:18
说的不是很好,见谅

楼主,如果解决了,记得给出最佳答案,不要挂在这里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 16:26:30 From FishC Mobile | 显示全部楼层
忽视 发表于 2018-2-28 16:19
楼主,如果解决了,记得给出最佳答案,不要挂在这里

谢谢大佬,这是一个汇编的简单代码,是把列表里数据用*用条形统计图的形式表示出来,你说的很好了,加个好友吧,向你学习,那个最佳答案给另一个大佬了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 00:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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