06、元组的定义和常用操作
a = (1,3,5,7)
b =4
#filter(lambda x: x < 4, a) # 取出a中小于4的元素
print(list(filter(lambda x: x < b, a)))
b =6
print(list(filter(lambda x: x < b, a)))# 取出a中小于6的元素
print(len(list(filter(lambda x: x < b, a))))# 取出a中小于6的元素的个数
# 输入日期,输出对应生肖
zodiac_name = (u'摩羯座',u'水瓶座',u'双鱼座',u'白羊座',u'金牛座',u'双子座',
u'巨蟹座',u'狮子座',u'处女座',u'天秤座',u'天蝎座',u'射手座')
zodiac_days = ((1,20), (2,19), (3,21), (4,21), (5,21), (6,22),
(7,23), (8,23), (9,23), (10,23), (11,23), (12,23))
(month, day) = (2,15)
zodiac_day =filter(lambda x: x<=(month, day), zodiac_days)
#print(list(zodiac_day))
# [(1,20)]
zodiac_len =len(list(zodiac_day)) %12
print(zodiac_name[zodiac_len])
# 取模12的原因:当输入的元组范围大于12月23日,取得的元组长度为12,python元组下标是0~11,而不是1~12,因此使用12求模的方式,避免下标越界
import time
num = [1,2,3,4,5,6]
a =iter(num)# 把列表转换成迭代器
print(type(num))
print(type(a))
print(list(a))# 一次返回所有内容
print(list(a))# 空了
# filter()函数返回类型是迭代器,使用list函数可以一次性将filter函数返回的内容数据全部取出来,第二次再取数据自然会为空
b =filter(lambda x: x <=5, num)
print(b.__next__())# 取第一个
print(b.__next__())# 取第二个
print(list(b))# 全取出来
time.sleep(1)# 停1s便于观察
b.__next__()# 返回一个StopIteration异常,告诉用户已经没有可以取的数据了