【有书共读11】零压力学Python读书笔记04
但行好事,莫问前程。
第六章
- 索引和函数enumerate;
# 我们经常会遇见这样的情况:将一个列表打印出来,并在前面加上序号 import random my_list = [] for i in range(10): my_list.append(random.randint(0, 100)) # 方法1:使用range函数和列表来实现 for i in range(len(my_list)): print(i + 1, my_list[i]) # 方法2:通过变量来实现 m = 1 for i in my_list: print(m, i) m += 1 # 方法3:通过enumerate函数实现 for index, p_str in enumerate(my_list, 1): print(index, p_str) # 前面两种方法就不详细说了,重点说第三种里面的enumerate函数 ''' for index, p_str in enumerate(my_list, 1): print(index, p_str) 1:for 里面的迭代器有两个index 和p_str 其中index表示需要的序号, p_str则是my_list里面的内容 2:enumerate 函数也是传递了两个参数,第一个是列表,第二个是序号的起始数字 3:需要注意的是关键字 in 前面的两个参数的顺序和 enumerate函数里面的两个参数的顺序并不是一样的 '''
- 再谈 字符串方法format
# 一:简单格式的设置 info = 'my name is {}.' print(info.format('子永')) # 输出结果为 my name is 子永. # 二:设置字段宽度----{:n} info = 'my name is {:4}.' print('**************************') # 用作对比 print(info.format('子永')) """ 上面语句的运行结果,注意'.'的位置 ************************** my name is 子永 . """ # 三:在设置字段宽度的前提下设置对其方式 # 右对齐-->{:>n} 左对齐-->{:<n} 居中-->{:^n} # 我们设置字段宽度为五个字符并分别以三种对其方式,打印10以内的奇数 # 右对齐-----注意,数字字段的默认对其方式是右对齐,所以{:<n}和{:n}是等效的 print("*****") # 对比 for i in range(1, 10, 2): print('{:>5}'.format(i)) # 左对齐-----注意对非数字字段而言,默认是左对齐,所以{:<n}和{:n}是等效的 for i in range(1, 10, 2): print('{:<5}'.format(i)) # 居中 for i in range(1, 10, 2): print('{:^5}'.format(i))
- 简单的列表推导式
# 先来看一个简单的例子 我们需要将old_list里面的每个元素的平方生成一个新的列表 old_list = [1, 2, 3, 4, 5] new_list = [i ** 2 for i in old_list] # 只需要这一行代码就搞定 print(old_list) print(new_list) """ 输出结果 [1, 2, 3, 4, 5] [1, 4, 9, 16, 25] 我们用文字来表述一下 新列表 = [表达式 for循环头] new_list = [i ** 2 for i in old_list] 那么对上面这个列表推导式的解释应该就是: 对old_list里面的每个i 都将它平方后追加到new_list列表里面 """
- 二维列表推导式
""" 形式: new_list=[表达式 for语句1 for语句2] 我们可以理解为 new_list=[] for语句1: for语句2: new_list.append(表达式) """ # 看一个例子 new_list = [i * j for i in range(1, 3) for j in range(1, 3)] print(new_list) # 打印的结果为 [1, 2, 2, 4] 其实是[1*1,1*2,2*1,2*2] # 上面的二维列表推导式相当于下面的语句 new_list = [] for i in range(1, 3): for j in range(1, 3): new_list.append(i * j)
- 包含条件的列表推到式
""" 形式 新的列表=[表达式 for循环1~n 条件] 这里面for循环可以出现多次,所以我用1~n表示 多个for循环就表示式多嵌套 """ # 看一个例子---我们对上面那个例子添加一个条件 new_list = [i * j for i in range(1, 4) for j in range(1, 4) if i > j] print(new_list) # 这里的输出结果是 [2, 3, 6] # 对上面的列表推导式的等价为 new_list1 = [] for i in range(1, 4): for j in range(1, 4): if i > j: new_list1.append(i * j) print(new_list1) # 这里的输出结果是 [2, 3, 6] 可以看出来和上面一
- 集合简介---set{}
""" 1 集合中的元素必须是独一无二的,相同的值不能出现两次,这个和列表不同 2 集合中元素的顺序是无关紧要的 即{1,2,3}和{3,2,1}是相同的 3 集合显示时 通常是以一定的顺序显示的 """ # 集合的定义---{} a = {1, 2, 3} b = {3, 2, 1} print(a) print(type(a)) print(b) print(a == b) """ 输出结果为 {1, 2, 3} <class 'set'> {1, 2, 3} True 我们可以看出,对与集合a和集合b而言,当给它们打印出来的时候, 它们显示的是一样的 """
- 使用引号创建字符串
""" 我们可以使用单引号('') 双引号("")三引号('''''')创建字符串 但要注意使用的引号需要一致 当我们使用单引号创建字符串的时候,该字符串里面可以含有双引号 同理 使用双引号创建字符串的时候,该字符串里面可以含有单引号 三引号里面的字符串一般又称多行字符串 例如我们现在书写注释的这个 地方就是一个多行字符串 """ s1 = '666"666' s2 = "I'm a boy" s3 = """三引号可以用来写注释 它可以包含‘和 ”。""" s4 = r'这个字符串在前面加了一个r 它表示里面的所有反斜线不表示转义\n' print(s1, s2, s3, s4, sep='\n')
- 字符串的索引和切片
""" 字符串的索引和切片和列表的差不多相同,所以这里面就不在详细总结了 """
- 字符串和数字之间的转换
""" 字符串转数字 ---不一定转换成功 int() 转成整数 float()转成浮点数 如果要转换的字符串就不是一个数字的形式,那么会转换失败 数字转字符串 str() """ s = '321' print(int(s)) # 输出结果为 321 s = '23.34' print(float(s)) # 输出结果为 23.34
- 剔除多余的字符---strip(chars)
""" 这个方法用来剔除开头和末尾的字符并返回新的字符串 默认也是最常用的是剔除空格 """ s = ' hello boy ' print(s.strip(), len(s.strip())) # 输出结果为:hello boy 9 中间的空格并不会剔除 # 如果指定了参数chars,将删除chars指定的每一个字符---如果它位于开头或结尾(不要求这些字符一起出现) s = r'+-*/*-+-/I-am+a*boy/!/*-+//*-+' # 我们调用strip方法剔除前后的+ - * / 符号 s = s.strip('+-*/') print(s) # 输出结果为I-am+a*boy/! 注意它只会剔除前后的,中间的不会剔除
- 使用split拆分字符串
""" 功能:将字符串以指定的分隔符分割为多个子串 组成一个列表返回 默认split 是以空格为分割符的 """ s = 'I am a boy' s_list = s.split() print(s_list) # 输出结果为 ['I', 'am', 'a', 'boy'] name_str = '张三,李四,王五,赵六' name_list = name_str.split(',') print(name_list) # 输出结果为['张三', '李四', '王五', '赵六']
- 通过拼接(+)创建字符串
""" 对字符串来说 + 就意味着连接 """ s1 = 'I am a boy.' s2 = 'I am 18 years old.' s = s1 + s2 print(s) # 输出结果为:I am a boy.I am 18 years old.
- join方法
""" 将一个列表里面的元素通过指定的分割字符(或者分割字符串)连接成一个字符串并返回 注:它只会在元素之间添加指定的分割符,而不会在末尾添加 """ name_list=['张三', '李四', '王五', '赵六'] # 使用字符+将它们连接生成新的字符串 name_str='+'.join(name_list) print(name_str) # 输出结果为:张三+李四+王五+赵六 # 注: join方法只会在元素之间添加指定的分割符,而不会在末尾添加 # join 是字符串的方法,不是列表的方法 # join方法效率高,性能好
评论可能比正文精彩