加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

pythonic方式将变量转换为列表

发布时间:2020-12-16 23:23:28 所属栏目:Python 来源:网络整理
导读:我有一个函数,其输入参数可以是元素或元素列表.如果这个参数是一个单一的元素,那么我把它放在列表中,所以我可以一致地迭代输入. 目前我有这个: def my_func(input): if not isinstance(input,list): input = [input] for e in input: ... 我正在使用现有的A
我有一个函数,其输入参数可以是元素或元素列表.如果这个参数是一个单一的元素,那么我把它放在列表中,所以我可以一致地迭代输入.

目前我有这个:

def my_func(input):
    if not isinstance(input,list): input = [input]
    for e in input:
        ...

我正在使用现有的API,因此我无法更改输入参数.使用isinstance()感觉到hacky,所以有一个正确的方法来做到这一点?

解决方法

我喜欢Andrei Vajna关于hasattr(var,’__ iter__’)的建议.注意这些典型的Python类型的结果:
>>> hasattr("abc","__iter__")
False
>>> hasattr((0,),"__iter__")
True
>>> hasattr({},"__iter__")
True
>>> hasattr(set(),"__iter__")
True

这具有将字符串视为不可迭代的附加优点 – 字符串是灰色区域,有时您希望将它们视为元素,而另一些作为字符序列.

请注意,在Python 3中,str类型确实具有__iter__属性,这不起作用:

>>> hasattr("abc","__iter__")
True

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读