今天,跟着Alex喝了心灵的鸡汤:Be a new gentlmen
着装得体
每天洗澡
适当用香水
女士优先
不随地吐痰、不乱扔垃圾、不在人群中抽烟
不大声喧哗
不插队、碰到别人要说抱歉
不在地铁上吃东西
尊重别人的职业和劳动
尊重别人隐私,不随便打听别人工资
与人保持安全距离(1米)
多去旅行,一年至少一个国家
多看书,电影,一年15本书,50+部电影
学好英语
保持不甘心、保持正能量
做事件一定要学会换位思考,要想此事会不会给别人造成不好的困扰
积极影响身边的人
推荐读书
《三体》
《百年孤独》
常量:用全部大写字母命名变量名
引入模块:
import os #推荐一行一个
安装模块:
pip install pandas
os模块执行系统命令:
os.system("df") os.popen("ifconfig").read()
.pyc是什么?
Python是一门基于虚拟机的语言,pyc 是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python 的虚 拟机来执行的。
数据类型
1.数字
int(整型)
32位系统:-2**31-1~2**31-1
64位系统:-2**63-1~2**63-1
type()函数用于输出数据类型
long(长整型)
float(浮点型)
2.布尔值
真或假
1或0
3.字符串
推荐使用格式化输出:
Y = "test" str = "This is a %s" %Y print (str)
PS:字符串是%s;整数是%d;浮点数是%f
+号拼接字符串,效率低,因为其使用了多块内存空间。
字符串
字符串常用功能
移除空白
分割
索引
切片
长度
字符串操作
删除空格
>>> name="abc " >>> name=name.strip() >>> name 'abc'
分割字符串
>>> user="jim|jack" >>> print(user.split("|")) ['jim', 'jack']
判断是否有空格
>>> name="jim jack" >>> print(' ' in name) True
首字母大写
>>> print(name.capitalize()) Jim jack
格式化输出字符串
>>> msg = "Hello, {name}, I am fine" >>> msg.format(name="Jimme") 'Hello, Jimme, I am fine' >>> msg2="hahaha{0}, dddd{1}" >>> print(msg2.format('Ini',33)) hahahaIni, dddd33
切片
>>> name="This is a test1,and what's your name" >>> print(name[2:7]) is is
查找
>>> print(name.find('test')) 10 >>> print(name.find('tTTTT')) -1
按长度填充字符串
>>> print(name.center(40,'x') ... ) xxThis is a test1,and what's your namexx
字符串是否为数字
>>> age="27" >>> print(age.isdigit()) True
字符串是否包含数字、开头、结局是否包含字符
>>> name = "test01" >>> print(name.isalnum()) True >>> print(name.endswith("df")) False >>> print(name.startswith("df")) False
字符串大小写转换
>>> print(name.upper(),name.lower()) TEST01 test01
列表
列表基本操作:
索引
切片
追加
删除
长度
切片
循环
包含
切片:取多个元素
>>> name = ["abc","jack",1,2,3,4] >>> name[-3:-1] [2, 3] >>> name[-3:0] [] >>> name[-3:] [2, 3, 4] >>> name[:1] ['abc'] >>> name[:2] ['abc', 'jack']
切片后再切片
>>> name[:2][:1][0] 'abc' >>> name[:2][:1][0][1] 'b'
修改列表元素
>>> name[3]="xiaoming" >>> name ['abc', 'jack', 1, 'xiaoming', 3, 4]
插入
>>> name.insert(2,"wangou") >>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 3, 4]
追加
>>> name.append("mac") >>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 3, 4, 'mac']
删除
>>> name.remove(3) >>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 4, 'mac']
删除是只删除一个
>>> name.append("mac") >>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 4, 'mac', 'mac'] >> name.remove("mac") >>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 4, 'mac'] >>> print(name[::2]) ['abc', 'wangou', 'xiaoming', 'mac']
元素是否在列表中,查找元素个数,查找元素位置
>>> name ['abc', 'jack', 'wangou', 1, 'xiaoming', 4, 'mac'] >>> print(1 in name) True >>> print(name.count(4)) 1 >>> print(name.index(4)) 5
扩展(合并列表)
>>> name2=["zhangzi","lizi","wangba"] >>> name.extend(name2) >>> print(name) ['abc', 'jack', 'wangou', 1, 'xiaoming', 4, 'mac', 'zhangzi', 'lizi', 'wangba']
反序排列元素
>>> name.reverse() >>> print(name) ['wangba', 'lizi', 'zhangzi', 'mac', 4, 'xiaoming', 1, 'wangou', 'jack', 'abc']
元素排序(版本3不支持字符与数字排序)
>>> name.sort() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() >>> name ['lizi', 'mac', 'wangba', 'zhangzi', 4, 'xiaoming', 1, 'wangou', 'jack', 'abc'] >>> name=[1,3,2,4] >>> name.sort() >>> print(name) [1, 2, 3, 4]
移除元素(默认移除最后一个元素)
>>> name.pop() 4 >>> print(name) [1, 2, 3]
移除指定元素
>>> name.pop(1) 2 >>> print(name) [1, 3]
拷贝
>>> name3 = name.copy() >>> print(name3) [1, 3]
拷贝时,第一层的元素(非列表)不会改变,元素为列表时与变量赋值一样,内存地址不变,所以2个列表内,元素为列表内的元素变化时,2个列表也一起改变
>>> name=[1,2,3,[1,2,3,4],4] >>> name2 = name.copy() >>> name2 [1, 2, 3, [1, 2, 3, 4], 4] >>> name[3][2]="TTT" >>> name [1, 2, 3, [1, 2, 'TTT', 4], 4] >>> name2 [1, 2, 3, [1, 2, 'TTT', 4], 4] >>> name[2]="AAA" >>> name [1, 2, 'AAA', [1, 2, 'TTT', 4], 4] >>> name2 [1, 2, 3, [1, 2, 'TTT', 4], 4]
删除列表
>>> del name2 >>> name2 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'name2' is not defined
元组:不能被修改
基本操作:
索引
切片
循环
长度
包含
>>> r=(1,2,3,4,5) >>> r (1, 2, 3, 4, 5) >>> type(r) <class 'tuple'> >>> r[2]=1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
数据运算符
和其它语言一样,python也支持进行各种各样的数学和逻辑运算,我们一起来看一些。
python语言支持以下几种运算
算术运算
比较运算
Assignment Operators
二进制运算
关系运算
验证运算
算术运算
运算符 | 描述 | 示例 |
+ | 加法运算 | a + b 得 30 |
- | 减法运算 | a - b 得 -10 |
* | 乘法运算 | a * b 得 200 |
/ | 除法运算 | b / a 得 2 |
% | 取模 - 将%号左边的值除以%号右边的值并且将得到的结果的余数返回 | 10%5得0 ,10%3 得1, 20%7 得6 |
** | 幂 - 返回x的y次幂,就是返回多少次方 | 2**8 得256 |
// | 取整除 - 返回x除以y的商的整数部分 | 9//2得4 , 9.0//2.0得4.0 |
比较运算
运算符 | 描述 | 示例 |
== | 判断两个对象是否相等 | (a == b) is not true. |
!= | 判断两个对象是否不相等 | (a != b) is true. |
<> | 判断两个对象是否不相等 | (a <> b) is true. 与 != 运算符一样. |
> | 大于 - 返回a是否大于b | (a > b) is not true. |
< | 小于 - 返回a是否小于b | (a < b) is true. |
>= | 大于等于 - 返回a 是否大于等于b | (a >= b) is not true. |
<= | 小于等于 - 返回a 是否小于等于b | (a <= b) is true. |
赋值运算
运算符 | 描述 | 示例 |
= | 赋值 - 将右边的值赋值给左边的变量名 | c = a + b 将会把a+b的结果赋值给c |
+= | 自加赋值 - 将+=号左边的值与+=号右边的值相加,然后再把结果赋值给+=号左右的值 | c += a相当于 c = c + a |
-= | 自减赋值 | c -= a相当于 c = c - a |
*= | 自乘赋值 | c *= a 相当于 c = c * a |
/= | 自除赋值 | c /= a 相当于 c = c / a |
%= | 自取模赋值 | c %= a 相当于 c = c % a |
**= | 自求幂赋值 | c **= a 相当于 c = c ** a |
//= | 自取整赋值 | c //= a 相当于 c = c // a |
按位运算(二进制运算)
二进制位数 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
每位所代表的数字 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
60 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
2个10进制数字的位运算
运算符 | 描述 | 示例 |
& | 与运算,这个二进制位必须在2组数中都为真,结果才返回真 | (a & b)得12,二进制位: 0000 1100 |
| | 或运算,这个二进制位只需在其中一组数据中为真即返回真 | (a | b)得 61,二进制位: 0011 1101 |
^ | 异或运算,只要这个二进制位在两组数据中不相同就返回真 | (a ^ b)得 49 ,二进制位: 0011 0001 |
<< | 左移运算,将a整体向左移2位 | a << 2得240,二进制位: 1111 0000 |
>> | 右移运算,将a整体向左移3位 | a >> 3得 7 ,二进制位: 0000 0111 |
看下面的运算过程:
二进制位 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 结果 |
每位所代表的数字 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
60 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | |
13 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | |
&与运算 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 12 |
|或运算 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 61 |
^异或运算 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 49 |
a<<2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 240 |
a>>3 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
逻辑运算符 and 、or 、not
关系运算符 in 、not in
验证运算符 is 、 is not
字典
id_db = { 42342323232: { 'name': "Yangkun", 'age': 23, 'addr': 'Dongbei' }, 23232424224: { 'name': 'Guojin', 'age': 22, 'addr': 'Hubei' } }
字典的特性:
dict是无序的
key必须是唯一的,so 天生去重
增加
>>> id_db[322323232332]={ ... 'name':'Guojia', ... 'age':45, ... 'addr':'Changan' ... } >>> >>> print(id_db) {42342323232: {'addr': 'Dongbei', 'age': 23, 'name': 'Yangkun'}, 23232424224: {'addr': 'Hubei', 'age': 22, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}}
修改
>>> id_db[23232424224]['age']=32 >>> print(id_db) {42342323232: {'addr': 'Dongbei', 'age': 23, 'name': 'Yangkun'}, 23232424224: {'addr': 'Hubei', 'age': 32, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}}
删除
>>> id_db[23232424224].pop("addr") 'Hubei' >>> print(id_db) {42342323232: {'addr': 'Dongbei', 'age': 23, 'name': 'Yangkun'}, 23232424224: {'age': 32, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}}
返回指定键的值,如果值不在字典中返回默认值
>>> tmp = id_db.get(23232424224) >>> print(tmp) {'age': 32, 'name': 'Guojin'}
更新
>>> dic2 = { ... 42342323232: { ... 'name': "Yangkun", ... 'age': 23, ... 'addr': 'Shangdong' ... } ... } >>> id_db.update(dic2) >>> print(id_db) {42342323232: {'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'}, 23232424224: {'age': 32, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}}
返回元组对的列表
>>> print(id_db.items()) dict_items([(42342323232, {'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'}), (23232424224, {'age': 32, 'name': 'Guojin'}), (322323232332, {'addr': 'Changan', 'age': 45, 'name': 'Guojia'})])
以列表返回字典中的所有值
>>> print(id_db.values()) dict_values([{'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'}, {'age': 32, 'name': 'Guojin'}, {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}])
以列表返回一个字典所有的键
>>> print(id_db.keys()) dict_keys([42342323232, 23232424224, 322323232332])
key是否存在于字典中
>>> 42342323232 in id_db True
get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值
>>> id_db.setdefault(42342323232) {'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'} >>> print(id_db) {42342323232: {'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'}, 23232424224: {'age': 32, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}, 4: None}
用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
>>> print(dict.fromkeys([1,2,3,4,33,32],"TTTTEST")) {32: 'TTTTEST', 1: 'TTTTEST', 2: 'TTTTEST', 3: 'TTTTEST', 4: 'TTTTEST', 33: 'TTTTEST'}
随机删除一个元素
>>> print(id_db.popitem()) (42342323232, {'addr': 'Shangdong', 'age': 23, 'name': 'Yangkun'}) >>> print(id_db) {23232424224: {'age': 32, 'name': 'Guojin'}, 322323232332: {'addr': 'Changan', 'age': 45, 'name': 'Guojia'}, 4: None}
循环字典(效率低,因为有一个dict to list的转换过程)
>>> for k,v in id_db.items(): ... print(k,v) ... 23232424224 {'age': 32, 'name': 'Guojin'} 322323232332 {'addr': 'Changan', 'age': 45, 'name': 'Guojia'} 4 None
>>> for key in id_db: #效率高 ... print(key,id_db[key]) ... 23232424224 {'age': 32, 'name': 'Guojin'} 322323232332 {'addr': 'Changan', 'age': 45, 'name': 'Guojia'} 4 None