def flatarrs(arrs):
ans = []
for arr in arrs:
if type(arr) == str:
ans.append(arr)
yield arr
else:
yield from flatarrs(arr)
def locate(seq, value):
return value in list(flatarrs(seq))
- 课程大类AGENDA -01 Scratch 初中高01 女性编程日周二02 Python 编程思维02 数字设计3D实践03 VEX IQ 理论和实战03 创客体验 免费预约04 ACM/NOI 算法04 物联网基础实践**▽ ****课程体系和进度****▽ **
丁丁猫python起跑班课程内容覆盖7个大模块,每个模块文末详细技能知识点。3个班的进度相同但讲的深度不同。课程设计中将感受到对逻辑课的高度重视,弥补国内K12编程和数学课程缺少的重要一环。
本文是课程内容的深入补充同时为了便于查看历史文章,单独汇总字典部分的用法。有部分同学进度赶不上,可以考虑跟下一轮基础班重修。
**- **编程实践和机器人课程中穿插必备的数学和物理
**- **全球顶级的STEM在线课程提供线下辅导
- 既能视频一对一学习,也有线下授课
▽ 关键技能点▽
-
多层嵌套数组如何展开
-
递归写法的优点
-
生成器
template
递归
format
学编程和学吃牛排
“老师教我刀叉怎么切牛肉,你以为好玩又好吃?”
“当然这么认为,不然我替你去学!”
“一上午对着一盘子,切了半天的空气”
“脑补了你对着空盘子认真到无聊的样子”
Python练习题:多层嵌套的数组
输入:['a','b',['c','d',['e',['a','b',['c','d',['e']]]]]]
输出:['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
三种写法
第一种递归:简洁易懂
arrs = ['a','b',['c','d',['e',['a','b',['c','d',['e']]]]]]
def flatarrs(arrs):
ans = []
for arr in arrs:
if type(arr) == str:
ans.append(arr)
yield arr
else:
yield from flatarrs(arr)
print(list(fattarrs(arr))
# 第二种生成器:生成器
def flat(seq):
iterator, sentinel, stack = iter(seq), object(), []
while True:
value = next(iterator, sentinel)
if value is sentinel:
if not stack:
break
iterator = stack.pop()
elif isinstance(value, str):
yield value
else:
try:
new_iterator = iter(value)
except TypeError:
yield value
else:
stack.append(iterator)
iterator = new_iterator
print(list(fattarrs(arr))
1. Collections: List, Dictionary, Set, Tuple, Range, Enumerate, Iterator, Generator
.
2. Types: Type, String, Regular_Exp, Format, Numbers, Combinatorics, Datetime
3. Syntax: Args, Inline, Closure, Decorator, Class, Duck_Types, Enum, Exceptions
4. System: Print, Input, Command_Line_Arguments, Open, Path, Command_Execution.
5. Data: CSV, JSON, Pickle, SQLite, Bytes, Struct, Array, MemoryView, D
网友评论