You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:25:28