python基础62例

1、十转二

将十进制转换为二进制:

  1. bin(10)
  2. #打印示例
  3. print(bin(10))
  4. '0b1010'

2、十转八

十进制转换为八进制:

  1. oct(9)
  2. #打印示例
  3. print(oct(9))
  4. '0o11'

3、十转十六

十进制转换为十六进制:

  1. hex(15)
  2. #打印示例
  3. print(hex(15))
  4. '0xf'

4、字符串转字节

字符串转换为字节类型:

  1. s = "apple"
  2. bytes(s,encoding='utf-8')
  3. #打印示例
  4. print(bytes(s,encoding='utf-8'))
  5. b'apple'

5、转为字符串

字符类型、数值型等转换为字符串类型:

  1. i = 100
  2. str(i)
  3. #打印示例
  4. print(str(i))
  5. '100'

6、十转ASCII

十进制整数对应的 ASCII 字符:

  1. chr(65)
  2. #打印示例
  3. print(chr(65))
  4. 'A'

7、ASCII转十

ASCII字符对应的十进制数:

  1. ord('A')
  2. #打印示例
  3. print(ord('A'))
  4. 65

8、创建字典

创建数据字典的几种方法:

  1. #示例一
  2. dict()
  3. {}
  4. #示例二
  5. dict(a='a',b='b')
  6. {'a': 'a', 'b': 'b'}
  7. #示例三
  8. dict(zip(['a','b'],[1,2]))
  9. {'a': 1, 'b': 2}
  10. #示例四
  11. dict([('a',1),('b',2)])
  12. {'a': 1, 'b': 2}

9、转为浮点类型

整数或数值型字符串转换为浮点数:

  1. float(3)
  2. #打印示例
  3. print(float(3))
  4. 3.0

如果不能转化为浮点数,则会报ValueError:

  1. >>> float('a')
  2. Traceback (most recent call last):
  3. File "<pyshell#7>", line 1, in <module>
  4. float('a')
  5. ValueError: could not convert string to float: 'a'

10、转为整型

int(x, base =10)
x 可能为字符串或数值,将 x 转换为整数。
如果参数是字符串,那么它可能包含符号和小数点。如果超出普通整数的表示范围,一个长整数被返回。

  1. int('12',16)
  2. #打印示例
  3. print(int('12',16))
  4. 18

11、转为集合

返回一个 set 对象,集合内不允许有重复元素:

  1. a = [1,4,2,3,1]
  2. set(a)
  3. #打印示例
  4. print(set(a))
  5. {1, 2, 3, 4}

12、转为切片

class slice(start, stop[, step])
返回一个由 range(start, stop, step) 指定索引集的 slice 对象,代码可读性变好。

  1. a = [1,4,2,3,1]
  2. my_slice = slice(0,5,2)
  3. a[my_slice]
  4. #打印示例
  5. print(a[my_slice])
  6. [1, 2, 1]

13、转元组

tuple() 将对象转为一个不可变的序列类型

  1. a=[1,3,5]
  2. a.append(7)
  3. print(a)
  4. [1, 3, 5, 7]
  5. #禁止a增删元素,只需转为元组
  6. t=tuple(a)
  7. print(t)
  8. (1, 3, 5, 7)

14、转冻结集合

创建不可修改的集合:

  1. a = frozenset([1,1,3,2,3])
  2. # a 无 pop,append,insert等方法
  3. print(a)
  4. frozenset({1, 2, 3})

15、商和余数

分别取商和余数:

  1. divmod(10,3)
  2. #打印示例
  3. print(divmod(10,3))
  4. (3, 1)

16、幂和余同时做

pow 三个参数都给出表示先幂运算再取余:

  1. pow(3, 2, 4)
  2. #打印示例
  3. print(pow(3, 2, 4))
  4. 1

17、四舍五入

四舍五入,ndigits代表小数点后保留几位:

  1. print(round(10.045, 2))
  2. 10.04
  3. print(round(10.046, 2))
  4. 10.05

18、查看变量所占字节数

  1. import sys
  2. a = {'a':1,'b':2.0}
  3. print(sys.getsizeof(a)) # 变量占用字节数
  4. 240

19、门牌号

返回对象的内存地址

  1. class Student():
  2. def __init__(self,id,name):
  3. self.id = id
  4. self.name = name
  5. xiaoming = Student('001','xiaoming')
  6. print(id(xiaoming))
  7. 2281930739080

20、排序函数

排序:

  1. a = [1,4,2,3,1]
  2. #降序
  3. print(sorted(a,reverse=True))
  4. [4, 3, 2, 1, 1]
  5. a = [{'name':'xiaoming','age':18,'gender':'male'},{'name':'xiaohong','age':20,'gender':'female'}]
  6. #按 age升序
  7. print(sorted(a,key=lambda x: x['age'],reverse=False))
  8. [{'name': 'xiaoming', 'age': 18, 'gender': 'male'}, {'name': 'xiaohong', 'age': 20, 'gender': 'female'}]

21、求和函数

求和:

  1. a = [1,4,2,3,1]
  2. print(sum(a))
  3. 11
  4. #求和初始值为1
  5. print(sum(a,1))
  6. 12

22、计算表达式

计算字符串型表达式的值:

  1. s = "1 + 3 +5"
  2. print(eval(s))
  3. 9
  4. print(eval('[1,3,5]*3'))
  5. [1, 3, 5, 1, 3, 5, 1, 3, 5]

23、真假

  1. print(bool(0))
  2. False
  3. print(bool(False))
  4. False
  5. print(bool(None))
  6. False
  7. print(bool([]))
  8. False
  9. print(bool([False]))
  10. True
  11. print(bool([0,0,0]))
  12. True

24、都为真

如果可迭代对象的所有元素都为真,那么返回 True,否则返回False

  1. #有0,所以不是所有元素都为真
  2. print(all([1,0,3,6]))
  3. False
  1. #所有元素都为真
  2. print(all([1,2,3]))
  3. True

25、至少一个为真

接受一个可迭代对象,如果可迭代对象里至少有一个元素为真,那么返回True,否则返回False

  1. # 没有一个元素为真
  2. print(any([0,0,0,[]]))
  3. False
  1. # 至少一个元素为真
  2. print(any([0,0,1]))
  3. True

26、获取用户输入

获取用户输入内容:

  1. print(input('输入点东西'))
  2. #以下为控制台输出的内容
  3. 输入点东西aaa
  4. aaa

27、print 用法

  1. lst = [1,3,5]
  2. # f 打印
  3. print(f'lst: {lst}')
  4. lst: [1, 3, 5]
  5. # format 打印
  6. print('lst:{}'.format(lst))
  7. lst:[1, 3, 5]

28、字符串格式化

格式化字符串常见用法

  1. print("i am {0},age {1}".format("tom",18))
  2. i am tom,age 18
  3. print("{:.2f}".format(3.1415926)) # 保留小数点后两位
  4. 3.14
  5. print("{:+.2f}".format(-1)) # 带符号保留小数点后两位
  6. -1.00
  7. print("{:.0f}".format(2.718)) # 不带小数位
  8. 3
  9. print("{:0>3d}".format(5)) # 整数补零,填充左边, 宽度为3
  10. 005
  11. print("{:,}".format(10241024)) # 以逗号分隔的数字格式
  12. 10,241,024
  13. print("{:.2%}".format(0.718)) # 百分比格式
  14. 71.80%
  15. print("{:.2e}".format(10241024)) # 指数记法
  16. 1.02e+07

29、返回对象哈希值

返回对象的哈希值。值得注意,自定义的实例都可哈希:

  1. class Student():
  2. def __init__(self,id,name):
  3. self.id = id
  4. self.name = name
  5. xiaoming = Student('001','xiaoming')
  6. print(hash(xiaoming))
  7. -9223371894234104688

list, dict, set等可变对象都不可哈希(unhashable):

  1. hash([1,3,5])
  2. Traceback (most recent call last):
  3. File "<pyshell#71>", line 1, in <module>
  4. hash([1,3,5])
  5. TypeError: unhashable type: 'list'

30、打开文件

返回文件对象

  1. import os
  2. os.chdir('D:/source/dataset')
  3. os.listdir()
  4. ['drinksbycountry.csv', 'IMDB-Movie-Data.csv', 'movietweetings', 'titanic_eda_data.csv', 'titanic_train_data.csv']
  5. o = open('drinksbycountry.csv',mode='r',encoding='utf-8')
  6. o.read()
  7. "country,beer_servings,spirit_servings,wine_servings,total_litres_of_pure_alcohol,continent\nAfghanistan,0,0,0,0.0,Asia\nAlbania,89,132,54,4.9,"

mode 取值表:

字符 意义
'r' 读取(默认)
'w' 写入,并先截断文件
'x' 排它性创建,如果文件已存在则失败
'a' 写入,如果文件存在则在末尾追加
'b' 二进制模式
't' 文本模式(默认)
'+' 打开用于更新(读取与写入)

31、查看对象类型

class type(name, bases, dict)
传入参数,返回 object 类型:

  1. print(type({4,6,1}))
  2. <class 'set'>
  3. print(type({'a':[1,2,3],'b':[4,5,6]}))
  4. <class 'dict'>
  5. class Student():
  6. def __init__(self,id,name):
  7. self.id = id
  8. self.name = name
  9. print(type(Student('1','xiaoming')))
  10. <class '__main__.Student'>

32、两种创建属性方法

返回 property 属性,典型的用法:

  1. class C:
  2. def __init__(self):
  3. self._x = None
  4. def getx(self):
  5. return self._x
  6. def setx(self, value):
  7. self._x = value
  8. def delx(self):
  9. del self._x
  10. # 使用property类创建 property 属性
  11. x = property(getx, setx, delx, "I'm the 'x' property.")

使用 C 类:

  1. C().x=1
  2. c=C()
  3. # 属性x赋值
  4. c.x=1
  5. # 拿值
  6. print(c.getx())
  7. 1
  8. # 删除属性x
  9. c.delx()
  10. # 再拿报错
  11. c.getx()
  12. Traceback (most recent call last):
  13. File "<pyshell#118>", line 1, in <module>
  14. c.getx()
  15. File "<pyshell#112>", line 5, in getx
  16. return self._x
  17. AttributeError: 'C' object has no attribute '_x'
  18. # 再属性赋值
  19. c.x=1
  20. c.setx(1)
  21. print(c.getx())
  22. 1

使用@property装饰器,实现与上完全一样的效果:

  1. class C:
  2. def __init__(self):
  3. self._x = None
  4. @property
  5. def x(self):
  6. return self._x
  7. @x.setter
  8. def x(self, value):
  9. self._x = value
  10. @x.deleter
  11. def x(self):
  12. del self._x

33、是否可调用

判断对象是否可被调用,能被调用的对象是一个callable 对象。

  1. callable(str)
  2. #打印示例
  3. print(callable(str))
  4. True
  5. callable(int)
  6. #打印示例
  7. print(callable(int))
  8. True

Student 对象实例目前不可调用:

  1. class Student():
  2. def __init__(self,id,name):
  3. self.id = id
  4. self.name = name
  5. xiaoming = Student(id='1',name='xiaoming')
  6. print(callable(xiaoming))
  7. False

如果 xiaoming能被调用 , 需要重写Student类的__call__方法:

  1. class Student():
  2. def __init__(self,id,name):
  3. self.id = id
  4. self.name = name

此时调用 xiaoming():

  1. xiaoming = Student('001','xiaoming')
  2. xiaoming()
  3. I can be called
  4. my name is xiaoming