基础
Python的语法比较简单,采用缩进方式。
以#
开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:
结尾时,缩进的语句视为代码块。
标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号 ; 分开。
数据类型
数据类型分类:
- 数字
- 字符串
- 列表
- 元组
- 字典
- 集合
数字(整型、长整型、浮点型、复数、布尔型)
int | long | float | complex |
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3e+18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2E-12 | 4.53e-7j |
- 长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。
- Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。
注意:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。
var1 = 1
var2 = 10
字符串
字符串是以单引号'
或双引号"
括起来的任意文本,比如'abc'
,"xyz"
等等。请注意,''
或""
本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'
只有a
,b
,c
这3个字符。如果'
本身也是一个字符,那就可以用""
括起来,比如"I'm OK"
包含的字符是I
,'
,m
,空格,O
,K
这6个字符。
s="a1a2···an"
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标]
例如:
>>> s = 'abcdef'
>>> s[1:5]
'bcde'
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = 'Hello World!'
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第六个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
以上实例输出结果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
列表
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表是有序的,可修改的。
[ ] 标识,是 python 最通用的复合数据类型。
[头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
输出:
['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
元组
元组是另一个数据类型,类似于 List(列表)。
()
元组是有序的,不可修改的。
例如:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
输出:
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
字典是无序的,可修改。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
输出:
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
集合
集合是可修改的无序的不重复的序列,集合使用花括号{}。
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
创建集合:
语法:set(可迭代对象)
创建空集合:s = set()
s = set([3,4,5,6,7]) #创建一个数字集合{3, 4, 5, 6, 7}
w = set([2,3,4])
t = set("hello")# 遍历字符串中的每个字符,拆开成单个字符{'h', 'e', 'l', 'o'}
my_set1 = set(("hello",)) # 创建含有一个元素的集合,有逗号说明是元组
my_set2 = set(("haha","wode","en"))#创建一个含有多个元素的集合
print("s:",s) # s: {3, 4, 5, 6, 7}
print("w:",w) # w: {2, 3, 4}
print("my_set1:",my_set1) # {'hello'}
print("my_set2:",my_set2) # {'en', 'haha', 'wode'}
s.add() #添加集合
s.updata(可迭代对象) # 添加多项
s.remove(x) #删除指定元树x,如果x不存在则会发生错误
s.discard() #和remove()一样,但是当删除指定元素不存在时,不会报错
s.clear() #清空集合
s.pop() #弹出最后一个书或弹出指定数
s = set([4,5]) #创建一个数字集合{3, 4, 5}
s.add('w')
print("添加后的s:",s) # {4, 5, 'w'}
s.update(['ni','hao','ya']) # 添加多项
print("添加多项后的s:",s) # {'hao', 'ya', 4, 5, 'w', 'ni'}
# 我们输入字符串试试
s.update("hid") # 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。,
print(s) # {'hao', 'ya', 4, 5, 'w', 'h', 'ni', 'i', 'd'}
s.remove("hao") # 移除元素
print("移除元素",s) # {'w', 'e', 'o', 'l', 12, 'h', 23}
s.discard('ya') # 移除元素,不存在不会发生错误
print(s) # {'d', 4, 5, 'i', 'ni', 'w', 'h'}
s.pop() # 随机删除集合中的元素,这个方法返回值是删除的数,不是返回None
print(s) # {4, 5, 'i', 'ni', 'w', 'h'}
s.clear()
print(s) # set()
| 生成两个集合的并集
& 生成两个集合的交集
- 生成两个集合的补集
^ 生成两个集合的对称补集(也就是两个集合的并集减去交集)
> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
==, != 判断集合是否相同
in , not in 判断集合是否在另一个集合中
len(s), sum(s), max(s), min(s), sum(s), any(s), all(s)
s = set([3,4,5,6,7]) #创建一个数字集合{3, 4, 5, 6, 7}
w = set([2,3,4])
print("求交集:",s&w) # {3, 4}
print("求并集:",s | w) # {2, 3, 4, 5, 6, 7}
print("求差集:",s-w) # 减去相同的元素 {5, 6, 7}
print("求差集:",w-s) # 减去相同的元素 {2}
print("并集减去交集:",s ^ w) # {2, 5, 6, 7}
print(len(s)) # 5
print(3 in s) # True
s = set([3,4,5,6,7]) #创建一个数字集合{3, 4, 5, 6, 7}
w = set([2,3,4])
print("求交集:",s&w) # {3, 4}
print("求并集:",s | w) # {2, 3, 4, 5, 6, 7}
print("求差集:",s-w) # 减去相同的元素 {5, 6, 7}
print("求差集:",w-s) # 减去相同的元素 {2}
print("并集减去交集:",s ^ w) # {2, 5, 6, 7}
print(len(s)) # 5
print(3 in s) # True
固定集合 frozenset 固定集合是不可变、无序的,含有唯一元素的不可迭代的集合,
作用:固定集合可以作为字典的键,还可以作为字典的值
固定集合的构造函数
frozenset() 创建一个空的固定集合
frozenset(iterable) 用可迭代对象创建一个固定的集合
固定集合的运算和集合的运算完全一样
集合推导式: {表达式 for 变量 in 可迭代对象 [if 真值表达式]} # [ ]可以省略
集合推导式同样也可以嵌套
{x for x in range(10)} #返回集合