python不同于C,变量没有类型,也不需要声明;但是在使用变量前必须赋值,只有赋值以后才会被创建;
我们此处所说的 类型 是指变量所指的内存中对象的类型;
查询、判断变量所指的数据类型可以使用 type() 函数、isinstance() 函数;【isinstance、type函数用法及比较】
python可以同时给多个变量赋值;一个变量也可以通过赋值指向不同的对象;
可以使用 del 语句删除单个或多个对象,如下:
a, b = 1, 2
del a, b
python中有6个标准的数据类型:
不可变(3个):数字(number)、字符串(string)、元组(tuple);
可变(3个):列表(list)、字典(dictionary)、集合(set);
其中字符串、元组、列表属于序列(sequence);
如要进行数据类型的转换,只需将数据类型作为函数名即可,如将对象 a 转换为字符串:str(a);
目录
1、数字(number):
int | 整型(python3中没有long) |
float | 浮点型 |
bool | 布尔型(True、False,对应值为1和0,可以和数字相加) |
complex | 复数(表示为 a+bj 或complex(a, b)) |
数值运算:
运算 | 运算方式 | 结果 |
---|---|---|
5 + 4 | 加法 | 9 |
3.5 - 2 | 减法 | 1.5 |
2 * 9 | 乘法 | 18 |
5 / 2 | 除法(得到一个浮点数) | 2.5 |
5 // 2 | 除法(取商) | 2 |
5 % 2 | 取余 | 1 |
5 ** 2 | 乘方 | 25 |
混合运算时,python会将整型转化为浮点型;
2、字符串(string):
字符串用单引号 ' 或双引号 " 括起来;
字符串的截取操作:
str[头下标:尾下标:步长]
注释:
- 下标为负代表从后向前数,如:-1 对应最后一个字符;
- 头下标对应位置可以取到;
- 尾下标对应位置取不到;
- 步长可正可负;
演示如下:
a_str = 'abcdefghijklmn'
print('字符串的长度:', len(a_str))
print('截取cdefg:', a_str[2: 7])
print('截取klmn:', a_str[10:])
print('截取klmn:', a_str[-4:])
print('efghi倒序输出:', a_str[8: 3: -1])
print('efghi倒序输出:', a_str[-6: -11: -1])
print('输出bdfh:', a_str[1: 8: 2])
字符串的拼接:(演示如下)
a_str = 'abcde'
b_str = '12345'
print('拼接a_str和b_str:', a_str + b_str)
print('重复输出3次a_str:', a_str * 3)
可以使用反斜杠 \ 转义特殊字符【转义字符总结】,若不想让反斜杠发生转义,在字符串前添加 r 即可(表示原始字符串):
演示如下:
print('输出字符串:', 'ab\ncde')
print('禁止转义后的字符串:', r'ab\ncde')
此外,反斜杠也可以作为续行符,表示下一行是上一行的延续;
python中字符串不可变,不能通过索引位置对其重新赋值,如:str[2] = 'w',会导致错误;
3、元组(tuple):
元组与列表类似;
与列表的不同之处:
- 元组的元素写在小括号()中;
- 元组的元素不能修改;
可以将字符串看作一种特殊的元组;
虽然元组的元素不可变,但是它可以包含一些可变的对象,如列表;
构造包含0个或1个元素的特殊规则演示如下:
a_tuple = () # 空元组
b_tuple = (1, ) # 只包含一个元素时,必须在后面加逗号
4、列表(list):
列表中的元素可以是任何类型(数字、字符串、列表、元组 ......);
列表与字符串一样可以被索引或截取,被截取后返回一个包含截取元素的新列表;
截取思想、规则与字符串相同;也可以使用 + 、* 进行列表的连接与列表的重复(同字符串);
与字符串不同的是:列表中的元素可以改变,演示如下:
a_list = [1, '2ad', 4, 'fg', [1, 2, 3]]
print(a_list)
a_list[1] = 2
print(a_list)
a_list[2:] = [3, 4, 5]
print(a_list)
5、字典(dictionary):
字典是无序对象的集合;
字典中的元素(键值对)是通过 键 来存取的,而不是通过偏移来存取;
a_dict = {键key1: 值value1, 键key2: 值value2, ...}
键key必须使用不可变的类型,且同一字典中键key必须是唯一的;
创建空字典用 {};
演示如下:
a_dict = {}
print('空字典:', a_dict)
a_dict[1], a_dict['a'] = 'z', 20
print('添加两个键值对后:', a_dict)
print('输出key为1对应的value:', a_dict[1])
print('输出所有的key:', a_dict.keys())
print('输出所有的value:', a_dict.values())
b_dict = dict([('a', 'aa'), ('b', 'bb'), ('c', 'cc')])
print('直接从键值对序列中构建字典:', b_dict)
print({x: x**2 for x in range(6)})
print(dict(aaa='a', bbb='b', ccc='c'))
6、集合(set):
集合由一个或数个形态各异的大小整体组成,构成集合的事物或对象称为元素或成员;
可以使用大括号 {} 或 set() 函数创建集合(创建空集合必须用 set() 函数);
输出集合时,重复的元素会被自动去掉;
parame = {value1, value2, ...}
set(value)
演示如下:
a_set = {'a', 'b', 'a', 'r', 'c', 'c', 'f', 'w'}
print('a_set:', a_set)
b_set = {'abcccdeefff'}
print('b_set:', b_set)
c_set = set('adfgvcartcc')
print('c_set:', c_set)
print('a_set 与 c_set 的差集:', a_set - c_set)
print('a_set 与 c_set 的并集:', a_set | c_set)
print('a_set 与 c_set 的交集:', a_set & c_set)
print('a_set 与 c_set 的不同元素:', a_set ^ c_set)
if 'w' in a_set:
print('w 在集合 a_set 中')
else:
print('w 不在集合 a_set 中')