Python 变量定义
python 中变量无需定义变量的类型,直接命名并赋值即可,赋值后变量将被创建,只作为一个存放容器,没有额外定义。
赋值依旧使用 = 赋值即可。
赋值方式
可以同时赋值,例如
a1 = a2 = a3 = 0
也可以分别赋值,例如
a1, a2, a3 = 1, 2.2, "123"
数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
数据不可变的类型(3 个):Number(数字)、String(字符串)、Tuple(元组)
数据可变的类型(3 个):List(列表)、Dictionary(字典)、Set(集合)
Number
int、float、bool、complex(复数)
整数只有一个 int 类型,bool为 int的子类型,实际上Number 只有三种
因为数值不允许发生变化,所以当数值发生改变的时候其实是在重新分配内存空间也就是创建新的变量。
如果要删除原有变量 使用
del var1
del var1, var2
可以使用内置函数 type() 或者 isinstance() 来查看对应变量的类型
示例:
a = 120
print(type(a)) # 结果<class 'int'>
isinstance(a, int) # 结果 True
type() 不会认为子类是一种父类类型。
isinstance() 会认为子类是一种父类类型。
bool 是 int 的子类
True 和 False 可以与数字相加,True==1、False == 0 会返回 True,可通过 is 来判断类型
True==1
False==0
# 返回均为 true
True+1 # 最终获取为 2
# 但
1 is True # 为False
0 is False # 为False
与Java相比较为特殊的几个运算
2 / 4 # 除法,得到一个浮点数 0.5
2 // 4 # 除法,得到一个整数 0
2 ** 3 # 乘方 8
% 依旧为取余运算
复数
复数由实数部分和虚数部分构成,可以用a + bj,或 complex(a,b) 表示,复数的实部a和虚部b都是浮点型
字符串
使用单引号或者双引号括起来,也使用反斜杠 \ 做转义字符
python 的字符串变量截取采用一种语法如下:
变量[开始位置 : 结束位置]
索引从左往右数起分别是从0123到结尾,0为第一个
最后一位索引也记作 -1,从右往左依次为 -1 ,-2 ,-3 ,-4以此类推
例如:
>>> string1 = "ABCDE";
>>> print(string1)
ABCDE
>>> print(string1[0:-1])
ABCD
>>> print(string1[0:-4])
A
>>> print(string1[-5:-1])
ABCD
>>> print(string1[0])
A
>>> print(string1[0:])
ABCDE
>>> print(string1[:-1])
ABCD
>>> print(string1 * 2) # 打印两次 2 与 string1 可交换位置
ABCDEABCDE
>>> print(string1 + ' toA') # +号拼接
ABCDE toA
依旧遵循左开右闭原则
不需要转义时使用 r 例如:
>>> str2 = "cha\nge"
>>> print(str2)
cha
ge
>>> str3 = r"cha\nge"
>>> print(str3)
cha\nge
List
列表,类似于Java中的 List< Object >,列表中可以存放不同类型的值,嵌套列表也是可以的。使用中括号 [ ]存放,类似于数组,不同元素使用 ,分割。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表
列表截取的语法格式与字符串也类似
变量[开始位置 : 结束位置]
计数方式也一样
索引从左往右数起分别是从0123到结尾,0为第一个
最后一位索引也记作 -1,从右往左依次为 -1 ,-2 ,-3 ,-4以此类推
使用单个索引时获取指定那一个
例子:
>>> list1 = ["aaa", "bbb", 451, 1126, "123", 2.5, True];
>>> list2 = ["x", "y"];
>>> print(list1)
['aaa', 'bbb', 451, 1126, '123', 2.5, True]
>>> print(list1[0:5])
['aaa', 'bbb', 451, 1126, '123']
>>> print(list1[1:])
['bbb', 451, 1126, '123', 2.5, True]
>>> print(list1[:-1])
['aaa', 'bbb', 451, 1126, '123', 2.5]
>>> print(list1 * 2) # 复制内容输出
['aaa', 'bbb', 451, 1126, '123', 2.5, True, 'aaa', 'bbb', 451, 1126, '123', 2.5, True]
>>> print(list1 + list2) # list 之间的链接
['aaa', 'bbb', 451, 1126, '123', 2.5, True, 'x', 'y']
list 中数据的修改
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
截取语法添加第三个参数时为步长,例如
list1 = ["aaa", "bbb", 451, 1126, "123", 2.5, True];
print(list1[0::2])
# 结果 ['aaa', 451, '123', True]
当第三个参数为负数时表示从后往前读取
那么反转相当于
list1 = ["aaa", "bbb", 451, 1126, "123", 2.5, True];
print(list1[-1::-1])
Tuple
元组,与List 相似,但是元组中的数据不能修改,类型可以不同,使用逗号分割,使用()包围,截取与 List 一致,
字符串可以看作是一种特殊的元组
元组中的元素不能改变,但是可以包含可以改变的 list 元素,list 内部可以变化
元组个别特殊的内容介绍如下
tup1 = () # 空元组
tup2 = (123,) # 一个元素,需要在元素后添加逗号
string、list 和 tuple 都属于 sequence(序列)
Set
集合
由一个或多个形态各异的大小整体组成,构成集合的事物或对象称作元素或成员
可以去重以及了解成员关系
使用大括号 { } 或者 set() 函数创建集合
注意:
创建一个空集合必须用 set() 而不是 { },因为 { } 用来创建一个空字典
例如:
set1 = {"aa", "bb", "cc"}
元素放入集合后,重复内容将被自动去除
测试是否在集合中可以使用
setCollect = {"aaa", "bbbb", "CCC"}
if ("ssa" in setCollect ):
print(True);
else:
print(False);
集合运算
set可以进行集合运算
a = set('rzvkppnhbs816')
b = set('vk')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
结果:
{'p', 'b', 'z', 'h', 's', 'r', 'k', '1', '8', 'n', 'v', '6'}
{'p', 'b', 'z', 'h', 's', 'r', '1', '8', 'n', '6'}
{'p', 'b', 'z', 'h', 's', 'r', 'k', '1', '8', 'n', 'v', '6'}
{'k', 'v'}
{'p', 'b', 'z', 'h', 's', 'r', '1', '8', 'n', '6'}
Dictionary
字典(dictionary)类似于 Java 的 Map
列表是有序的对象集合,字典是无序的对象集合。
列表和字典的区别在于:字典当中的元素是通过键来存取,列表通过偏移存取。
键(key)必须使用不可变类型
在同一个字典中,键(key)必须唯一
dict1 = {};
dict1["akey"] = "client key"
dict1["bkey"] = "client key2"
dict2 = {"a":123, "b":324, "c":568}
print(dict1)
print(dict1["akey"])
print(dict1["bkey"])
print(dict2)
print(dict2.keys())
print(dict2.values())
结果
{'akey': 'client key', 'bkey': 'client key2'}
client key
client key2
{'a': 123, 'b': 324, 'c': 568}
dict_keys(['a', 'b', 'c'])
dict_values([123, 324, 568])
构造函数 dict() 可以直接从键值对序列中构建字典
>>> dict([('a', 1), ('b', 2), ('c', 3)])
{'a': 1, 'b': 2, 'c': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(a=1, b=2, c=3)
{'a': 1, 'b': 2, 'c': 3}
>>>
数据类型
int(x [,base])
将x转换为一个整数
float(x)
将x转换到一个浮点数
complex(real [,imag])
创建一个复数
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)
将一个整数转换为一个字符
ord(x)
将一个字符转换为它的整数值
hex(x)
将一个整数转换为一个十六进制字符串
oct(x)
将一个整数转换为一个八进制字符串