列表推导式总结

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

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

Python列表推导式是一种简洁的语法,用于快速创建列表。它允许我们在一行代码中使用循环和条件语句来生成列表元素。列表推导式的一般语法是在方括号内使用表达式和循环或条件语句。 引用\[1\]中的代码展示了一个使用两个嵌套循环的列表推导式的例子。通过使用range函数生成一系列数字,我们可以在循环中创建元组,并将其添加到空列表中。最终,我们得到了一个包含所有元组的列表。 引用\[2\]中的代码展示了一个简单的列表推导式的例子。通过使用range函数生成一系列数字,我们可以直接将这些数字添加到空列表中。 引用\[3\]中的代码展示了另一个使用两个嵌套循环的列表推导式的例子。与引用\[1\]中的代码相比,这里使用了更简洁的语法来生成包含所有元组的列表。 总结来说,Python列表推导式是一种简洁而强大的语法,可以帮助我们快速创建列表。它可以在一行代码中使用循环和条件语句来生成列表元素。 #### 引用[.reference_title] - *1* *2* *3* [Python列表推导式(更有风格的Python代码写法)](https://blog.csdn.net/weixin_48728769/article/details/124572778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值