推导式是典型的python风格,效率高:
列表推导式生成列表对象,语法如下:
带有判断语句的,就是只有满足 if条件的才被选上:
a=[x for x in range(5)] print(a) a=[x*8 for x in range(5)] print(a)[0, 8, 16, 24, 32]
a=[x*2 for x in range(5) if x>2] print(a)[6, 8]
传统的写法(不用推导式):
a=[] for x in range(5): if x>2: a.append(x*2) print(a)[6, 8]
操作统计字符串各字符出现次数
my_text = 'wdnmd,woc' char_count={c:my_text.count(c) for c in my_text} print(char_count)使用普通方法;实现上述要求:
my_text = 'wdnmd,woc' a={} for i in range(len(my_text)): a[my_text[i]]=my_text.count(my_text[i]) print(a){‘w’: 2, ‘d’: 2, ‘n’: 1, ‘m’: 1, ‘,’: 1, ‘o’: 1, ‘c’: 1}
集合推导式生成集合,和列表推导式生成列表语法格式类似
a={x for x in range(5) if x%2==0 } print(a){0, 2, 4}
元组与其他不同,
生成的是一个生成器(是可迭代对象)和range()类型一样
a=(x for x in range(5) if x%2==0 ) print(a)<generator object at 0x000001BB42CA2DE0>
a=(x for x in range(5) if x%2==0 ) print(tuple(a))(0, 2, 4)
a是一个生成器,必须用tuple()转化为元组。
a是一个可迭对象:
a=(x for x in range(5) if x%2==0 ) for x in a: print(x , end=' ')0 2 4
Day 23-1
先绘制单个园(输入q或者Q退出显示):
import turtle t = turtle.Pen() t.circle(100) while True: s=input('wdnmd') if s.upper()== 'Q': break或者用 turtle.done() 表示保留原图
import turtle a=10 t = turtle.Pen() t.circle(a) for i in range(10): t.penup() t.goto(0,-(i+1)*10) t.pendown() t.circle(a+(i+1)*10) turtle.done()t.speed(100) 用于调整绘图速度的。
t.width(4) 改变线条宽度
