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