一、变量的定义
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
Python允许你同时为多个变量赋值。
例如:
a = b = c = 1
以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。
也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "runoob"
以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。
Python中的可迭代(简单理解就是可以被循环遍历,也就是被for循环遍历)对象有:列表、元组、字典、字符串;常结合for循环使用;
二、变量的类型和数据类型有关的一些方法
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
其中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
Number(数字)
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型
除了type函数判断数据类型
还可以用 isinstance 来判断:
实例
>>> a = 111
>>> isinstance(a, int)
True
isinstance 和 type 的区别在于:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
>>> issubclass(bool, int)
True
可以通过使用del语句删除单个或多个对象(也就是说del语句可以作用于这六种数据类型对应的变量)所以以下不再列举此方法的使用
del var
del var_a, var_b
str(字符串 )
字符串或串(String)是由数字、字母、下划线组成的一串字符。
一般记为 :
s = "a1a2···an"
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
遵循前闭后开原则
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
一些常见的特殊字符
\在最后一个字母表示续行符
可用三个单引号或者双引号跨越多行
转义字符(像\n,\t这种具有反斜杠加上一个字母的带有特殊含义的字符)
若在其中作为数据,不转义
List(列表)
是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
list = [ 786 , 2.23, 'john', dict(),[1,2]]
列表被截取后返回一个包含所需元素的新列表
如果修改值传的是字典,只会接收键,值会丢失(列表切片时)
列表切片本质上与字符串是一样的,可参考上一节字符串
Tuple(元组)
元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20)
元组不允许更新,而列表是允许更新的,所以在列表中可以使用更新元素的方法在元组中是使用不了的。
string、list 和 tuple 都属于 序列
Set(集合)
基本功能是进行成员关系测试(in,not in)和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
以上实例输出结果:
{'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
Runoob 在集合中
{'b', 'c', 'a', 'r', 'd'}
{'r', 'b', 'd'}
{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
{'c', 'a'}
{'z', 'b', 'm', 'r', 'l', 'd'}
Dictionary(字典)
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
字符串,列表,元组都可以索引,切片(能通过索引,键修改值)
(不能通过索引修改值)
左到右从0开始 右到左从-1开始 都遵循前闭后开切片原则
dict.keys(),values(),items都是返回一个视图对象,是动态的,受字典变化的影响
字典遍历
使用字典时需要注意的一些问题:
在使用中如果直接使用dict.keys(),那么返回值为dict_keys,并非直接的列表,若要返回列表值还需调用list函数。
出现keyerror时:可能是用不存在的键去访问字典的值,此时应当检查字典中的键
数据类型的转换,你只需要将数据类型作为函数名即可。会返回一个新的对象,表示转换的值。