python日常注意小知识集锦


sort()和sorted()

以列表结果为例 - sort()没有结果返回,但对列表进行了排序(列表本身被改变) - sorted(),全局函数,有结果返回,注意:列表本身没有被改变。

示例如下:


python二维列表添加元素 python给二维列表赋值_json


zip()和enumerate()

  • zip()能完成任意两个或多个不同类型的列表的“缝合”
  • enumerate()只能为可迭代的序列(如列表、迭代器等)提供数值类型的索引封装

字典

赋值问题

  • 一般不要用赋值的方式来将一个字典赋值给另一个字典,因为这时它们指向的是同一个对象,对一个字典进行操作会影响另一个字典的元素。如果的确新建的字典的信息来自一个已经创建好了的字典,此时可以通过方法copy()

get()方法和中括号方式

  • 通过 get()方法访问字典元素的方式与中括号的访问方式的区别:即使访问的键不存在,它也不会抛出异常,而是返回一个“None”。如果返回“None”不能满足要求,还可以返回提示信息。中括号的方式,若访问的键不存在,会报异常:KeyError。

items()、keys()和values()

  • items():显示字典的所有元素(即键/值对)
  • keys():显示所有的键
  • values():显示所有的值

os模块

mkdir()和makedirs()

当父目录不存在时,os.mkdir(path)不会创建目录,并会报错:FileNotFoundError,但是 os.makedirs(path)会创建父目录。

json模块

dumps()与loads()

  • json.dumps():将Python对象序列化(即编码)为JSON格式的字符串。
  • json.loads():将JSON格式的字符串反序列化(即解码)为Python对象。

dump()与load()

如果我们要处理的是文件而不是字符串,则可以使用json.dump()和json.load()来编码和解码JSON数据(即动词dump和load后面没有字母s)

random模块

随机挑选元素

  • choice():从众多元素中选取一个元素
  • choices():一次性随机挑选多个元素,可能会存在重复元素(有放回抽样)
  • sample():从指定序列中随机获取指定长度的片段,原有序列不会改变。一次性随机抽取多个不重复的元素
  • shuffle():对序列的所有元素进行打乱排序

二维数组展平:ravel()和flatten()

  • ravel()方法:返回的仅仅是原始数组的视图而已,原始数组本身并没有发生变化。
  • flatten()函数:同样可以完成将多维数组展平成一维数组的操作。不同于ravel()返回的是原始数组的视图,flatten()会重新分配内存,完成一次从原始数据到新内存空间的深拷贝,但原始数组并没有发生任何变化。

re模块

“ .* ”和“ .*? ”的区别

  • 点号表示任意非换行符的字符
  • 星号表示匹配它前面的字符0次或者任意多次
  • " .* ”表示匹配一串任意长度的字符串任意次
  • “.*? ”,就是匹配一个能满足要求的最短字符串 举一个例子,10个人肩并肩并排站着,使用“(.)”取到了第1个人左手到第10个人右手之间的所有东西,而使用“(.? )”取到的是“每个人”的左手和右手之间的东西。

一句话总结如下。 ① “.*”:贪婪模式,获取最长的满足条件的字符串。 ② “.*? ”:非贪婪模式,获取最短的能满足条件的字符串。