Python学习笔记(Python基础)
1.Python语句以:结尾时,缩进的语句视为代码块;
2.Python程序是大小写敏感的;
3.输出字符串用 '' or "" ,单引号里面显示字符需要用转义字符,r''表示''内部的字符串默认不转义;
4.'''...'''表示多行字符串,在IDE中不需要自己输入... ;
print('''Line1 Line2 Line3''')
5.空值用None表示;
6.Python中可以把任意类型赋值给变量,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言(定义时必须指定变量类型);
7./除法计算结果用于是浮点数,//除法计算结果只取整数部分,取余用%;
8.Python整数与浮点数类型没有像其他语言那样有8位16位等大小限制,超出一定范围直接表示为inf(无限大);
9.Python的字符串类型是str,内存中以Unicode表示(2个字节),ord()可以将字符转为Unicode编码,chr()可以将Unicode的编码转为字符;
10.b'ABC'表示字节类型,每个字符只占用一个字节,str与bytes互转如下
print('ABC'.encode('ascii')) print('中文'.encode('utf-8')) print(b'ABC'.decode('ascii')) print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')) #如果bytes中只有一小部分无效的字节,可以传入ignore忽略错误的字节 print(b'\xe4\xb8\xad\xe6\x96\x87\xff'.decode('utf-8',errors='ignore'))
11.len()函数计算的是str的字符数,如果换成bytes,len()函数计算的是字节数:
print(len('中文')) #字符数 print(len('中文'.encode('utf-8'))) #字节数
12.在Python解释器读取源代码时,通常在文本文件的开头加上
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
并且.py文件保存时也需要使用UTF-8编码(中文3字节/英文1字节)
13.占位符格式化字符串输出
lastScore = 72 newScore = 85 print('小明成绩从去年的%d分提升到今年的%d分,提升了%.1f%%'%(72,85,(85-72)/85*100)) # 或者使用format print('小明成绩从去年的{0}分提升到今年的{1}分,提升了{2:.1f}%'.format(72,85,(85-72)/85*100))
不使用format的情况下,在占位符中如果要输出"%"符号,则需要用"%%";
print('%.5s' % '1234567')
使用".5s"可以截取字符串前5位,使用".2f"可以保留数字两位小数;
14.有序list集合
# list有序集合,可以添加和删除其中的元素 fruits = ['Apple','Banana','Pear','Peach'] print(fruits) print('len=%d'%len(fruits)) print('delete \'%s\'' % fruits.pop()) # 删除集合末尾元素 or pop(i) fruits.append('orange') # 添加元素到末尾 or list.insert(i,'orange')
list集合里面的元素可以是任意不同的类型,甚至可以是list数组
lan = ['C#',12,['ASP','JSP'],'Java'] # 数组长度为4 print(lan[2][1]) # 输出JSP
15.有序tuple元组
元组与list类似,但是tuple一旦初始化,其中元素就不能重新赋值(不能修改对象指向),并且没有pop()、insert()、append()等方法,但是如果其中的元素是list,list中的元素是可变的(tuple本身指向的list地址没有变)。
声明tuple:
t = (1,2,3) t = () # 空的tuple t = (1,) # 含有1个元素的tuple(注意必须加,) print(type(t)) # 输出<class 'tuple'> t = (1) # 注意这样的写法不是tuple,而是数值1 print(type(t)) # 输出<class 'int'>
16.循环 for x in.
for i in range(10): print(i)
等效于其他语言的:
for(int i = 0;i < 10;i++) { print(i); }
range()函数可以生成一个整数序列,如:
# range(start,stop[,step])
print(list(range(2,20,2)))
# 输出 [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list(range(0, -10, -1)))
# 输出 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
17.dict
键值对集合,内部实现是Hash,key必须是不可变对象,因为必须保证每次计算相同的key得出的哈希值是相同的,如果存放的key是list,将会导致dict内部混乱。
d = {'Lance':90,'Justine':100,'Alice':95} print(d) d['Lance'] = 92 print(d['Lance']) # 92 # print(d['Bob']) key不存在会报错误 # Traceback (most recent call last): # File "C:\Users\Zheng\Desktop\JustWriteIt.py", line 5, in <module> # print(d['Bob']) # KeyError: 'Bob' # 新增 key-value d['Kim'] = 99 print(d) # 删除 key-value # pop(key[, default]) 如果key存在则删除并返回默认值,如果key不存在则返回默认值 # 如果没有写,default,那么key不存在时会报KeyError d.pop('Alice') print(d) # 判断key是否存在于字典中 print('Lance' in d) print(d.get('Lance')) # 92 print(d.get('Alice')) # None print(d.get('Alice',60)) # 60
18.set
set和dict类似,是一组key的集合,并且key不重复。
初始化set需要提供一个list作为输入集合,如果list中有重复的值将会被过滤,并且set不是有序的。
set同样不可以放入可变对象,因为无法判断两个可变对象是否相等。
s = set([1,1,2,3,9,5,4]) print(s) # {1, 2, 3, 4, 5, 9} s.add(10) # 添加重复key没有效果 s.remove(3) # s.remove(6) 删除不存在的key会报错 print(s) # {1, 2, 4, 5, 9, 10} # 交集与并集计算 s1 = set([1,2,3]) s2 = set([2,3,4]) print(s1 & s2) # {2, 3} print(s1 | s2) # {1, 2, 3, 4}
19.不可变对象
对于不可变对象,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本想永远是不可变的。
假如有一个tuple等于(1,2,3),则其可以作为dict的key或者value,也可以作为set的key,因为tuple是不可变类型。
而如果tuple等于(1,[2,3]),则其不可以放入dict或者set中,因为其中的list是可变类型。