变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

一、变量赋值

Python中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

例如:
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

二、多个变量赋值

1.Python允许你同时为多个变量赋值。例如:a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

2.您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象1和2的分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。

三、标准数据类型

Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
1.Numbers(数字)
2.String(字符串)
3.List(列表)
4.Tuple(元组)
5.Sets(集合)-----python3.+新增的
6.Dictionary(字典)

type()函数用来查询变量的对象类型:type(123)  ==>  <class 'int'>
isinstance()判断是否是某种类型:isinstance(123, int)	== True

type与isinstance区别
	type()不会认为子类是一种父类类型。==> 即类型必须全等于
	isinstance()会认为子类是一种父类类型。==>即校验父类

四、Numbers(数字)

1.定义一个数字类型:num = 1
2.使用del语句删除一些对象的引用:del num   (执行这句之后,num变量就从内存中删除)

3.四种数字类型
	(1)int(有符号整型)	: num = 1
	
	(2)long(长整型[也可以代表八进制和十六进制])	: num = 1L
		(python2中有,python3中去除了)
	
	(3)bool布尔类型:flag = True(python3中新增)
	
	(4)float(浮点型)	: num = 1.2
	
	(5)complex(复数)	: num = 1 + 2j,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
	
	十六进制:number = 0xA0F
	八进制     :number = 0o37  
	
4.数值运算
	(1)加法:5 + 4  ==>9

	(2)减法:4.3 - 2  ==>2.3 

	(3)乘法3 * 7  ==>21 

	(4)除法,得到一个浮点数:2 / 4  ==>0.5

	(5)除法,得到一个整数:2 // 4 ==>0 

	(6)取余:17 % 3 ==>2 

	(7)乘方:2 ** 5 ==>32 
	
5.常用的函数(python直接使用,不需要import ***)
	函数						返回值 ( 描述 )
	abs(x)					返回数字的绝对值,如abs(-10) 返回 10
	ceil(x)					返回数字的上入整数,如math.ceil(4.1) 返回 5
	cmp(x, y)				如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃 。使用 使用 (x>y)-(x<y) 替换。
	exp(x)					返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
	fabs(x)					返回数字的绝对值,如math.fabs(-10) 返回10.0
	floor(x)				返回数字的下舍整数,如math.floor(4.9)返回 4
	log(x)					如math.log(math.e)返回1.0,math.log(100,10)返回2.0
	log10(x)				返回以10为基数的x的对数,如math.log10(100)返回 2.0
	max(x1, x2,...)		返回给定参数的最大值,参数可以为序列。
	min(x1, x2,...)		返回给定参数的最小值,参数可以为序列。
	modf(x)					返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
	pow(x, y)				x**y 运算后的值。
	round(x [,n])			返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
	sqrt(x)					返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j

6.随机数函数:import random(随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。)
	函数							描述
	random.random()			随机生成下一个实数,它在[0,1)范围内。
	random.choice(seq)		从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
	random.randrange(num)		从1~num范围内随机生成一个整数
	random.randrange(n1, n2)	从n1~n2范围内随机生成一个整数
	random.seed([x])			改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
	random.shuffle(lst)		将序列的所有元素随机排序
	random.uniform(x, y)		随机生成下一个实数,它在[x,y]范围内。
	
7.三角函数:import math
	函数						描述
	math.cos(x)			返回x的弧度的余弦值。
	math.sin(x)			返回的x弧度的正弦值。
	math.tan(x)			返回x弧度的正切值。
	math.acos(x)			返回x的反余弦弧度值。
	math.asin(x)			返回x的反正弦弧度值。	
	math.atan(x)			返回x的反正切弧度值。
	math.atan2(y, x)		返回给定的 X 及 Y 坐标值的反正切值。
	math.hypot(x, y)		返回欧几里德范数 sqrt(x*x + y*y)。
	math.degrees(x)		将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
	math.radians(x)		将角度转换为弧度
	math.pi					数学常量 pi(圆周率,一般以π来表示)
	math.e					数学常量 e,e即自然常数(自然常数)	

五、String(字符串)

1.Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符。

2.字符串的截取的语法格式如下:变量[头下标:尾下标]

	加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。实例如下:

	str = '12345'
	
	(1)输出字符串:print (str) ==>12345           
	
	(2)输出第一个个到倒数第二个的所有字符:print (str[0:-1]) ==>1234 
	
	(3)输出字符串第一个字符:print(str[0]) ==>1
	
	(4)输出从第三个开始到第五个的字符:print (str[1:3]) ==>234  
	
	(5)输出从第三个开始的后的所有字符:print (str[1:]) ==> 2345     
	
	(6)输出字符串两次:print(str * 2) ==>1234512345   
	
	(7)连接字符串:print(str + "TEST") ==>12345TEST
	
3.转义特殊字符
	使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串
	(1)使用转义:
		print('Ru\noob')
		==>	Ru
			oob	
	(2)不使用转义:
		print(r'Ru\noob')
		==>Ru\noob
	
	(3)转移符列表
		转义字符			描述
		\(在行尾时)		续行符
		\\				反斜杠符号
		\'				单引号
		\"				双引号
		\a				响铃
		\b				退格(Backspace)
		\e				转义
		\000			空
		\n				换行
		\v				纵向制表符
		\t				横向制表符
		\r				回车
		\f				换页
		\oyy			八进制数,yy代表的字符,例如:\o12代表换行
		\xyy			十六进制数,yy代表的字符,例如:\x0a代表换行
		\other			其它的字符以普通格式输出

4.续行符
	反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。
	如:
		v = '111' + \
			'222'
		
		a = '''1112
		22'''

5.Python中的字符串不能改变
	向一个索引位置赋值,比如word[0] = 'm'会导致错误。
	
6.Unicode 字符串
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。

7.内置函数

方法														描述
capitalize() 											将字符串的第一个字符转换为大写

center(width, fillchar) 								返回一个指定的宽度 width居中的字符串,fillchar为填充的字符,默认为空格。

count(str, beg= 0,end=len(string)) 					返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

bytes.decode(encoding="utf-8", errors="strict")	Python3 中没有decode方法,但我们可以使用bytes对象的decode() 
														方法来解码给定的bytes对象,这个bytes对象可以由str.encode()来编码返回。

encode(encoding='UTF-8',errors='strict') 			以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,
														除非 errors 指定的是'ignore'或者'replace'

endswith(suffix, beg=0, end=len(string))			检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,
														如果是,返回 True,否则返回 False.

expandtabs(tabsize=8)									把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。

find(str, beg=0 end=len(string)) 					检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,
														如果是返回开始的索引值,否则返回-1
														
index(str, beg=0, end=len(string))					跟find()方法一样,只不过如果str不在字符串中会报一个异常.

isalnum()												如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False

isalpha()												如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False

isdigit()												如果字符串只包含数字则返回 True 否则返回 False..

islower()												如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,
														则返回 True,否则返回 False

isnumeric()											如果字符串中只包含数字字符,则返回 True,否则返回 False

isspace()												如果字符串中只包含空格,则返回 True,否则返回 False.

istitle()												如果字符串是标题化的(见 title())则返回 True,否则返回 False

isupper()												如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,
														则返回 True,否则返回 False
														
join(seq)												以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

len(string)											返回字符串长度

ljust(width[, fillchar])								返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。

lower()													转换字符串中所有大写字符为小写.

lstrip()												截掉字符串左边的空格

maketrans()											创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,
														表示需要转换的字符,第二个参数也是字符串表示转换的目标。

max(str)												返回字符串 str 中最大的字母。

min(str)												返回字符串 str 中最小的字母。

replace(old, new [, max])							把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。

rfind(str, beg=0,end=len(string))					类似于 find()函数,不过是从右边开始查找.

rindex( str, beg=0, end=len(string))				类似于 index(),不过是从右边开始.

rjust(width,[, fillchar])							返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串

rstrip()											删除字符串字符串末尾的空格.

split(str="", num=string.count(str))				num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串

splitlines([keepends])								按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,
														不包含换行符,如果为 True,则保留换行符。
														
startswith(str, beg=0,end=len(string))				检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,
														则在指定范围内检查。
														
strip([chars])											在字符串上执行 lstrip()和 rstrip()

swapcase()												将字符串中大写转换为小写,小写转换为大写

title()													返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

translate(table, deletechars="")					根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中

upper()													转换字符串中的小写字母为大写

zfill (width)											返回长度为 width 的字符串,原字符串右对齐,前面填充0

isdecimal()											检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

8.正则表达式
	(1)Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
	
	(2)re.match
		re.match(pattern, string, flags=0)
		尝试从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,否则返回None。
	
	(3)re.search
		re.search(pattern, string, flags=0)
		re.search 扫描整个字符串并返回第一个成功的匹配。

六、List(列表)

List(列表)是 Python中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。
列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

1.基本操作
	a = [1, 2, 3, 4, 5, 6]
	增加一个:a.append(object)
	删除一个:del a[1]
	删除一个子集:a[2:5] ==> []   #删除一个范围的元素
	修改一个:a[0] = 0 
	查询一个子集:a[2:5] ==> [13, 14, 15]
	查询某一个:a[0] ==> 9

2.操作符
	a = [1, 2, 3, 4, 5, 6]
	列表长度:len(a) ==> 6
	组合:a + ['a', 'b'] = [1, 2, 3, 4, 5, 6, 'a', 'b']
	重复:a * 2 ==> [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
		注意:a[0:2] * 2 ==> [1, 2, 3, 1, 2, 3]返回一个新的列表
	包含:1 in a ==> True
	迭代:for item in list : print(item)

3.函数
	a = [1, 2, 3, 4, 5, 6]
	元素个数	:len(a)				
	元素最大值:max(a)
	元素最小是:min(a)
	将元组转为列表:list( (1,2,3) )
	末尾添加新的对象:a.append(7)
	元素出现次数:a.count(1)
	末尾添加一个列表:a.extend([1, 2, 3])
	元素在列表中的索引:a.index(2)
	指定位置增加元素:a.insert(1, '1')
	获得并移除某个元素(默认最后一个):a.pop( [a[1]] )
	删除列表中的第一个符合条件的值:a.remove(1)
	反向列表中元素:a.reverse()
	排序:a.sort( [func] )
	清空列表:a.clear()
	克隆一个列表(二者完全独立):b = a.copy()

七、Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。

1.使用元组
	tuple = ('abcd', 786 , 2.23, 'runoob', 70.2)
	tinytuple = (123, 'runoob')
	print (tuple)             # 输出完整元组
	print (tuple[0])          # 输出元组的第一个元素
	print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
	print (tuple[2:])         # 输出从第三个元素开始的所有元素
	print (tinytuple * 2)     # 输出两次元组
	print (tuple + tinytuple) # 连接元组

2.修改元组元素的操作是非法的
	tup[0] = 11	这是错误的

3.特殊用法
	构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
	tup1 = ()    # 空元组
	tup2 = (20,) # 一个元素,需要在元素后添加逗号

4.string、list和tuple都属于sequence(序列)。

八、Set(集合)

1.特点:集合(set)是一个无序不重复元素的序列。

2.基本功能:进行成员关系测试和删除重复元素。

3.创建集合:
	可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

4.基本使用
	
	(1)创建集合
		student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
		print(student)   # 输出集合,重复的元素被自动去掉

	(2)成员测试
		if('Rose' in student) :
		    print('Rose 在集合中')
		else :
		    print('Rose 不在集合中')
	
	(3)set可以进行集合运算
		a = set('abracadabra')
		b = set('alacazam')

		print(a - b)     # a和b的差集
		
		print(a | b)     # a和b的并集
		
		print(a & b)     # a和b的交集
		
		print(a ^ b)     # a和b中不同时存在的元素
		
		
		==>{'b', 'd', 'r'}
		==>{'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
		==>{'a', 'c'}
		==>{'l', 'r', 'z', 'm', 'b', 'd'}

九、Dictionary(字典)

1.字典(dictionary)是Python中另一个非常有用的内置数据类型。

2.列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

3.字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的。允许value == None

4.基本使用
	dict = {}
	dict['one'] = "aaaa"
	dict[2]     = 2222
	tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

	print (dict['one'])       # 输出 'aaaa
	print (dict[2])           # 输出 2222
	print (tinydict)          # 输出完整的字典
	print (tinydict.keys())   # 输出所有键
	print (tinydict.values()) # 输出所有值

5.构造函数 dict() 可以直接从键值对序列中构建字典如下:
	>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
	{'Taobao': 3, 'Runoob': 1, 'Google': 2}
	
	>>> {x: x**2 for x in (2, 4, 6)}
	{2: 4, 4: 16, 6: 36}
	
	>>> dict(Runoob=1, Google=2, Taobao=3)
	{'Taobao': 3, 'Runoob': 1, 'Google': 2}

6.注意:
	(1)字典是一种映射类型,它的元素是键值对。
	(2)字典的关键字必须为不可变类型,且不能重复。
	(3)创建空字典使用 { }。
	
7.函数
	a = {'k1':1, 'k2':2, 'k3':3, 'k4':4 }
	元素个数	:len(a)				
	转化为字符串(相当于Java的toString()):str(a)
	删除字典内所有元素:a.clear()
	删除一个键值对:del a['k1']
	浅复制字典:a.copy()
	创建并初始化字典:
		b = {};b = b.fromkeys( ['a1', 'a2', 'a3', 'a4'] , '1' );==> b = {'a1':'1', 'a2':'1', 'a3':'1', 'a4':'1'}
	获得一个键值:a.get('k1' [, "defaultValue"])
	遍历字典:a.items()  ==>dict_items([('k4', 4), ('k2', 2), ('k1', 1), ('k3', 3)])
	获得所有key的元组:a.keys()
	获得一个key值,若不存在key,则插入默认的值:setdefault('k1'[, "defaultValue"])
	以列表返回字典中的所有值:a.values()

8.遍历
	m = {'id':1, 'name':'zs'}
	keys = m.keys()
	for key in keys:
    print(key, "=", m[key])

十、数据类型转换

函数							描述
int(x [,base])				将x转换为一个整数
float(x)					将x转换到一个浮点数
complex(x) 				将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 				将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
str(x)						将对象 x 转换为字符串
repr(x)						将对象 x 转换为表达式字符串
eval(str)					用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)					将序列 s 转换为一个元组
list(s)						将序列 s 转换为一个列表
set(s)						转换为可变集合
dict(d)						创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s)				转换为不可变集合
chr(x)						将一个整数转换为一个字符
unichr(x)					将一个整数转换为Unicode字符
ord(x)						将一个字符转换为它的整数值
hex(x)						将一个整数转换为一个十六进制字符串
oct(x)						将一个整数转换为一个八进制字符串

文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.