python 基础笔记(其实有点内容的)

print(math.gamma(n)) # 求 (n-1) 的阶乘

数值, 数值计算
  1. format(50, "b") == bin(50)2:, 这个"b" 就代表的是 binary

    format(14, 'b') ------> '1110' 去除 0b

  2. 去掉前导零

    str(000001) # 只适合python2.x '1'

    "00000001".lstrip("0") # python3中的正确方法。

  3. random.uniform(5, 10), 返回一个 5-10之间的随机浮点数。

  4. x=y=z=10,链式赋值是可行的,而且简洁。

  5. nums=1,2,3, x,y,z=nums,这个叫做序列解包

  6. 整数和浮点数在计算机内部存储的方式不同,整数运算永远是精确的,

    而浮点数运算可能会有四舍五入的误差.

ord() 返回对应的 ASCII 数值,或者 Unicode 数值

chr() 用一个整数作参数,返回一个对应的字符。

int('0101011010110', 2) binary---int

int('776f726c64', 16) hex---int

bytes(string, 'utf-8') ------>bytes_string

  1. print(some_str.center(40, "*"))写注释很有用
  2. divmod(a, b) 返回一个包含商和余数的元组(a // b, a % b)
  3. pow(3, 2) = 32 pow(3, 2, 2) = 32 % 2
字符串
  1. f'{a_task:.2f}', 2位小数来表示浮点数
  2. field *= 2,增量赋值,也可以用于字符串。

在python3里,有几点关于编码的常识

  1. 字符就是unicode字符,字符串就是unicode字符数组
  2. 1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
  3. 不同的解释器环境下,print() 函数的输出结果会有所不同。
    比如 git-bash, 无法正确显示 gbk 编码的中文。
列表
  1. nums::2 每隔2步取一个值。写法很好啊。

  2. 生成5个空列表:

    正确的方法 ret = \[ for _ in range(5)]

    错误的方法 ret = \[] * 5

    错误的原因在于,如果 ret0.append(5),会出现:

    \[5\], \[5\], \[5\], \[5\], \[5\]

  3. strs = "flower","flow","flight"

    print(*strs), 就是把strs,解包为一个元组。

    输出: flower flow flight

  4. 1,2,3\] \* 2 ----\> \[1, 2, 3, 1, 2, 3

  5. 1,2\] + \[3,4\] ----\> \[1,2, 3, 4

  6. 奇数偶数分开排序的一种很好的写法。

    sorted(A, key=lambda x: 0 if x % 2 == 0 else 1)

  7. python3中 str.index(sub_string), 速度更快一些,比起 str.find(sub_string)

  8. 生成 m*n 个为 0的矩阵。

    正确: matrix = \[0 for j in range(m) for i in range(n)]

    错误: matrix = \[0 * m] * n

    本质上因为python里面存放的是 对象的引用

元组
  1. 元组可以使用下标索引来访问元组中的值
集合 set():
  1. 往set对象里add列表、集合对象时,时提示他们是不可hash的,而对于tuple类型就可以。
    原因:set里面的对象是hash存储(所以是无序的),对于python万物都是对象,如果存储一个list对象,而后改变了list对象,那set中刚才存储的值的hash就变了。
    结论:set是hash存储,必须存储不变的对象,例如字符串、数字、元组等。
  2. set().update(\[\]), 批量添加元素。
  3. set.intersection(set1, set2 ... etc) ,
    用于返回两个或更多集合中都包含的元素,即交集。
    这里set1, 也可以是任何序列。
    如果是字典,则比较字典的 键。
字典
  1. 字典也可以pop()!!!
  2. 获取一个字典所有的键,直接用list()来转换
    d = {'id':7, 'name':'Shiba', 'color':'brown', 'speed':'very slow'}
    print(list(d))

列表操作

print(1 * 3) # 1, 1, 1

print(1, 2, 3 + 4, 5) # 1, 2, 3, 4, 5

集合 set 简洁操作

print({1, 2, 3} - {1} ) # {2, 3}, 支持减法,不支持加法。

import math

print(math.log2(8)) # 3.0

print(math.log(8, 2)) # 3.0

print(math.log(5, 2)) # 2.321928094887362


老哥留步,支持一下。

相关推荐
宸津-代码粉碎机4 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
Y3815326624 小时前
SERP API 计费口径:credits_charged、执行失败扣费与退款边界
python·搜索引擎
蒸鱼Yuzheng6 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
圆圆讲门店6 小时前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
傻啦嘿哟7 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
微小冷7 小时前
Python凸优化cvxpy初步
python·机器人·凸优化·数学规划·cvxpy
在世修行7 小时前
干货:显式映射 vs 自动判据
python·插件
xzal127 小时前
Python之简单理解栈和队列
python
lupai7 小时前
维修保养记录精准版 API 对接实战指南
数据库·python
水水不水啊8 小时前
告别杂乱的调试窗口:我用 Python + WebView 写了一个现代化串口助手
python·测试工具·嵌入式·嵌入式开发·串口调试·串口助手