列表推导式总结「终于解决」

列表推导式总结「终于解决」list1=[11,[22,3],[4,],[55,66],8,[9,[7,[12,[34,[26]]]]]]如这个list如何将这些中括号去掉去括号,要知道一句话字符串操作要比类型操作容易。所以我的第一反应是li=str(list1).replace(‘[‘,”).replace(‘]’,”).split(‘,’)print([in…

list1 = [11, [22, 3], [4, ], [55, 66], 8, [9, [7, [12, [34, [26]]]]]]

如这个list 如何将这些中括号去掉

去括号,要知道一句话字符串操作要比类型操作容易。

所以我的第一反应是

li = str(list1).replace('[', '').replace(']', '').split(',')
print([int(i.strip()) for i in li])

皮这一下就是很快乐,反正达到要求了 不是么~

正经的使用递归函数处理

def func(li, l2=[]):
    for i in li:
        if isinstance(i, list):
            func(i)
        else:
            l2.append(i)
    return l2


print(func(list1))

中规中矩的一个递归函数 先判断是否是列表,是列表就循环,不是就添加

老师给的装逼利器

def func2(lis):
    return [li for item in lis for li in func2(item)] if isinstance(lis, list)else [lis]


print(func2(list1))

看不懂 但是我会拆开哇~

def func2(lis):
    if isinstance(lis, list):
        result = []
        for item in lis:
            for li in func2(item):
                result.append(li)
        return result
    else:
        return [lis]

拆开以后是不是瞬间领悟了

顺便拓展下 对于列表推导式:

列表推导式 可以说是Python中一大亮点,可惜 ··· 我并不会用

从基础开始:~ GO

[i for i in lis] ==> 这是最基础的了吧··· 等同于下面展开
l = []
for i in lis:
    l.append(i)

看看这种用法

for i in lis:
    print(i)
平常打印之类的 经常看眼数据对吧 换个方式看吧 ==> [print(i) for i in lis]

反正都是一些常用的偷懒的方法

[print(i) for i in lis if i>5] ==> 加一些简单的判断
for i in lis:
    if i > 5:
        print(i)

猜猜看下面的打印结果

[i if i>8 else i-1 for i in range(10) if i>5]
惊不惊喜 不止后面可以加判断条件 前面也可以继续处理
l = []
for i in range(10):
    if i > 5:
        if i > 8:
            l.append(i)
        else:
            l.append(i-1)

一层循环没意思,加一层

[print(li) for item in lis for li in item] ==> 循环嵌套
for item in lis:
    for li in item:
        print(li)

当然 多层循环也可以加条件

[print(f'{y}*{x}={x*y}', end='\t\t') if x != 9 else print(f'{y}*{x}={x*y}') for y in range(1, 10) for x in range(y, 10)]
emm 有点问题  但是 大概 可能 也算一个乘法表··· 逃~

for y in range(1, 10):
    for x in range(y, 10):
        if x!= 9:
            print(f'{y}*{x}={x*y}', end='\t\t')
        else:
            print(f'{y}*{x}={x*y}')

当然 还可以加很多很多东西, 比如网上的那些黑魔法(一行画个图。。之类的) 就是利用列表推导式 + join

不过 推导式虽然好用,但不要写的太过于复杂,不利于阅读和维护。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10093.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注