Python列表推导式中如何赋值并打印?解决返回None问题
问题解决:正确生成视频标题列表与简化videos获取流程
一、正确生成视频标题列表
你写的video_list = [print(video.title) for video in videos]返回全是None的原因很直接:print()函数本身没有返回值(默认返回None),列表推导式只是把每个print的返回值收集起来,自然得到的全是None的列表。
要正确生成标题列表,直接在推导式里取video.title即可:
video_list = [video.title for video in videos]
这个推导式会遍历videos里的每个元素,把它们的title属性逐一收集成列表,结果就是你需要的视频标题列表。如果需要同时打印标题,分开写就行:
video_list = [video.title for video in videos] for title in video_list: print(title)
二、简化videos列表的获取流程
如果获取videos的步骤繁琐,可以试试这几个实用方法:
- 封装成复用函数:把获取
videos的所有逻辑(比如接口请求、数据解析、过滤等)打包成一个函数,每次需要时直接调用,不用重复写冗余代码:def get_videos(): # 这里写你获取videos的完整逻辑,比如请求接口、解析数据 # 示例: # response = requests.get("xxx/api/videos") # videos = response.json() return videos # 调用时直接用 videos = get_videos() - 缓存结果:如果
videos的数据不会频繁更新,用缓存避免重复执行耗时的获取操作。比如用Python标准库的functools.lru_cache:
第一次调用后,后续调用会直接返回缓存的结果,不用重复请求或计算。from functools import lru_cache @lru_cache(maxsize=None) def get_videos(): # 原获取逻辑 return videos - 批量处理优化:如果是从数据库、外部接口获取
videos,尽量一次性批量拉取数据,不要分多次请求;如果需要过滤,优先在数据源端(比如SQL加条件、接口传参数)完成,减少本地处理的工作量。 - 用生成器节省内存:如果
videos数量极大,不需要一次性把所有标题存成列表,可以用生成器表达式代替列表推导式,节省内存:video_title_generator = (video.title for video in videos) # 遍历生成器获取标题 for title in video_title_generator: print(title)
内容的提问来源于stack exchange,提问作者ghost239
相关产品推荐
相关产品推荐

