鱼C论坛

 找回密码
 立即注册
查看: 1935|回复: 3

[已解决]小问题,关于函数返回值

[复制链接]
发表于 2023-4-17 14:48:57 | 显示全部楼层 |阅读模式

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

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

x
if len(list(res)) >0  return list(res)[0]   else  return 0

这个还有什么高大上的写法吗   感觉有些啰嗦
最佳答案
2023-4-17 14:54:00
本帖最后由 isdkz 于 2023-4-17 14:55 编辑

当然可以用更简洁的方法来实现相同的功能。这里是一个用 Python 的三元操作符实现的简化版本:
return list(res)[0] if len(list(res)) > 0 else 0

但是如果你想要进一步减少不必要的列表转换,可以采用以下写法:
return next(iter(res), 0)

这里使用了 next() 函数和 iter() 函数。iter(res) 创建了一个 res 的迭代器,然后 next() 函数尝试获取迭代器中的第一个元素,

如果迭代器为空(即 res 为空),则返回 0。这样,你可以避免在 res 为空时多次转换为列表。


不得不说,GPT是真的强呀,next(iter(res), 0) 这种写法我是真没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-17 14:52:07 | 显示全部楼层
可以这样写
if list(res) :
        return list(res)[0]
    else:
        return 0    

不知道是否还有更好的了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 14:54:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-4-17 14:55 编辑

当然可以用更简洁的方法来实现相同的功能。这里是一个用 Python 的三元操作符实现的简化版本:
return list(res)[0] if len(list(res)) > 0 else 0

但是如果你想要进一步减少不必要的列表转换,可以采用以下写法:
return next(iter(res), 0)

这里使用了 next() 函数和 iter() 函数。iter(res) 创建了一个 res 的迭代器,然后 next() 函数尝试获取迭代器中的第一个元素,

如果迭代器为空(即 res 为空),则返回 0。这样,你可以避免在 res 为空时多次转换为列表。


不得不说,GPT是真的强呀,next(iter(res), 0) 这种写法我是真没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 14:57:23 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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