可变的数据类型:list, dict, set (可修改其中的元素)
不可变的数据类型:str, tuple
重点:str, list, dict
列表推导式习题:
# 利用列表推导式: 找出100以内所有奇数,并将所有奇数乘以3,写入列表。 li = [i * 3 for i in range(1, 101) if i % 2 != 0] print(li) li = [i * 3 for i in range(1, 101, 2)] print(li)
递归的使用:(经典的猴子吃桃算法)
""" 猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。 第二天又将剩下的桃子吃掉一半,又多吃了一个。 以后每天都吃前一天剩下的一半零一个。 到第10天在想吃的时候就剩一个桃子了, 问:第一天共摘下来多少个桃子? """ """ 先进行分析: 第n天: 10 9 8 7 剩(个): 1 (1+1)*2=4 (4+1)*2=10 (10+1)*2=22 """ def peachs(n): if n == 10: return 1 else: return (peachs(n + 1) + 1) * 2 print(peachs(1))
没理解递归的话,看下面这个方案:
n = 1 # 天 x = 1 # 桃子几个 while n < 10: # 第9天发现只剩了一个 x = (x + 1) * 2 n += 1 print(x)
‘‘‘ 定义一个函数: 统计传入的字符串里,英文字母、空格、数字和其他字符分别出现次数, 并作为一个字典返回 {‘字母‘: ,‘空格‘: ,‘数字‘: ,‘其他字符:‘ } ‘‘‘ def count_types(s): # 先定义一个字典 dict = {"字母": 0, "空格": 0, "数字": 0, "其他字符": 0} # 遍历取出字符串中每个值 for i in s: if i.isalpha(): dict["字母"] += 1 # 键值访问,直接自加 elif i.isspace(): dict["空格"] += 1 elif i.isdigit(): dict["数字"] += 1 else: dict["其他字符"]+=1 return dict print(count_types("jing tian 520.1314!"))
""" 请定义一个名为titles的函数: 1.接收一句英文(字符串)作为参数 2.将这个英文的每个单词转换成有且只有首字母大写的形式 3.返回转换后的英文句 4.str.title具有这个功能,但在此题不可使用str.title 例如: >>> titles(‘this is python.‘) ‘This Is Python.‘ >>> titles(‘i love python‘) ‘I Love Python‘ """ # 利用列表推导式+lambda函数 一行代码搞定
# 可读性差,尽量避免写(但我个人比较喜欢这样,感觉眼前一亮,豁然开朗) s1 = "this is python." s2 = " i love jing tian " g = lambda s: " ".join([i.capitalize() for i in s.split()]) print(g(s1)) print(g(s2))