有没有一条线解决这个问题

2024-05-23 19:07:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常使用这段代码来取消列表和数字字符串的列表

def deKnot(someList):
    l = []
    for each in someList: l.extend(each) if (hasattr(each,"__iter__")) else l.append(each)
    return each

我希望我能用一种语法,比如。。。你知道吗

def deKnot(someList): return [extend(each) if (hasattr(each,"__iter__")) else append(each) for each in someList]

这是行不通的。这个问题有没有一个单一的解决方案?你知道吗


Tags: 代码in列表forreturnifdefelse
1条回答
网友
1楼 · 发布于 2024-05-23 19:07:15
def deKnot(someList):
    return [e 
            for each in someList 
            for e in (each if hasattr(each, '__iter__') else [each])]

each变成一个iterable和always循环;而不是在列表中使用嵌套循环。你知道吗

可以使用^{}而不是属性检查:

from collections import Iterable

def deKnot(someList):
    return [e 
            for each in someList 
            for e in (each if isinstance(each, Iterable) else [each])]

相关问题 更多 >