目录
一、运算符
1、算数运算符
2、赋值运算
3、比较运算
4、逻辑运算
5、成员运算
二、基本数据类型
数字类型
Python的数字类型有int整型、long长整型、float浮点数、complex复数
int整型的数值大小取决于计算机的位数 如:
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,
Python的long整型没有指定位宽
自从Python2.2起,如果整数(int)发生溢出,Python会自动将整数数据转换为长整数
int 将字符串数据类型转为int类型,
s = '1234' 注:字符串内的内容必须是数字
i = int( s )
print( i)
bit_length() 将数字转换为二进制,并且返回二进制的位数
i =6
print( i.bit_length() )
#输出结果为:3
布尔值 bool类
就两个值True与False 主要用于逻辑判断
字符串 str
字符串相当于一个列表,在python中可以用单引号或双引号创建字符串
索引 index()、find()
字符串的第一个字母位置为0
>>>name = "adfadfa"
index()
>>> print(name.index('a',)) 从第一个字母开始找,返回找到的第一个a的位置
0
>>> print(name.index('a',1,6)) 从位置1~6范围(不包括6)内找 返回找到的第一个a的位置
3
find()与index()作用相同 唯一不同的是:索引的该字符或者序列不在字符串内,对于index报错: 而对于find 返回 -1
>>> print(name.index('a',1,3))
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
print(name.index('a',1,3))
ValueError: substring not found
>>> print(name.find('a',1,2))
-1
切片
切片
>>> name = "adfadfa"
>>> name[0] 这里用到了列表
'a'
>>> name[1]
'd'
>>> name[0:3]
'adf'
长度 len() 此函数可以用于其他数据类型,如查看列表、元组以及字典中元素的多少
name = "adfadfa"
>>> print(len(name))
7
删除字符串
>>> del name
>>> name
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
name
NameError: name 'name' is not defined
判断字符串内容 isalnum()、isalpha()、isdigit()
isalnum()、isalpha()、isdigit() 三个用法相同,功能不同
isdigit()判断字符串是否全为数字
isalpha() 判断字符串是否全为字母
isalnum()判断字符串是否全为字母或字符串
>>> name = "adfadfgf"
>>> name.isalpha() 判断字符串是否全为字母
True
大小写转换 capitalize()、lower()、upper()、title()、casefold()
capitalize()、lower()、upper()、title()、casefold() 用法相同,功能不同
capitalize()首字母大写
lower() 全部转为小写
upper() 全部转为大写
casefold() 每个单词大小写转换
title() 转为标题(首字母大写)
>>> i = "i am boy"
>>> print(i.title())
I Am Boy
>>> print(i.capitalize())
I am boy
分割 split()
i = "i am boy"
print(i.split(" ")) 以空格分割
print(i.split("a")) 以字母a分割
输出:
['i', 'am', 'boy']
['i ', 'm boy']
格式化输出
format()的三种方法 格式化输出
s = '我叫{},今年{}'.format('wang',36)
print(s)
name = input("请输入你的名字")
s = '我叫{1},今年{0}'.format(36, name)
print(s)
name = input('请输入名字:')
s = '我叫{name},今年{age}'.format(age=18,name=wang)
print(s)
剔除 strip()
name='***(kajfkdjkl**'
print(name.strip('*'))
print(name.lstrip('*'))
print(name.rstrip('*'))
输出:
(kajfkdjkl
(kajfkdjkl**
***(kajfkdjkl
替换 replace()
name='xiaoming say: my name is xiaoming'
print(name.replace('xiaoming','bai'))
print(name.replace('xiaoming','bai',1)) 1代表将第一个匹配到的字符串替换掉
输出:
bai say: my name is bai
bai say: my name is xiaoming
判断是否以什么开头和结尾
name='xiaoming say: my name is'
print(name.endswith("is"))
print(name.startswith("xiaoming"))
输出:
True
True
计算字符串中某个元素出现的个数
name='xiaoming say: my name is'
print(name.count("s"))
输出
2
居中
name='XXXXXX'
print(name.center(20, "*"))
输出
*******XXXXXX*******
元组 tuple类
元组为只读列表,用小括号 name = ("xiaoli","xiaowang")
列表 list
相当于c语言中的数组 列表是有序的,可以索引、切片 。 创建一个数组 i = ["xiaowang",213,"xiaoming"]
增加元素
name = [1, 2, 3, 'a', 'b']
name.insert(3, "ss") 按索引添加 (只能添加一个元素)
print(name)
输出:
[1, 2, 3, 'ss', 'a', 'b']
name = [1, 2, 3, 'a', 'b']
name.append("ll") 在末尾添加(只能添加一个元素)
print(name)
name.append([123,"kk"])
print(name)
输出:
[1, 2, 3, 'a', 'b', 'll']
[1, 2, 3, 'a', 'b', 'll', [123, 'kk']]
name = [1, 2, 3, 'a', 'b']
name.extend('q') 迭代的增加
print(name)
name.extend(['q','aa','ff'])
print(name)
输出:
[1, 2, 3, 'a', 'b', 'q']
[1, 2, 3, 'a', 'b', 'q', 'q', 'aa', 'ff']
删除元素
name = [1, 2, 3, 'a', 'b']
name.pop(1) 按照索引值删除 (只能删除一个)
print(name)
输出:
[1, 3, 'a', 'b']
name = [1, 2, 3, 'a', 'b']
del name[0:2] 按照索引值删除 (顾头不顾尾)
print(name)
输出:
[3, 'a', 'b']
name = [1, 2, 3, 'a','a', 'b']
name.remove('a') #按照元素去删除 (只能删除第一个匹配到的元素)
print(name)
输出:
[1, 2, 3, 'b']
name = [1, 2, 3, 'a', 'b']
name.clear() 清空列表 (列表还在,只是没有元素)
print(name)
输出:
[]
替换元素
name = [1, 2, 3, 'a', 'b']
name[0] = 5
name[3: -1] = ['dd', 'rr']
print(name)
输出:
[5, 2, 3, 'dd', 'rr', 'b']
其他操作
count() 方法统计某个元素在列表中出现的次数)
name = [1, 2, 3, 2, 'a', 'b', 'a']
print(name.count(2))
print(name.count('a'))
输出:
2
2
index(方法用于从列表中找出某个值第一个匹配项的索引位置)
name = [1, 2, 3, 2, 'a', 'b', 'a']
print(name.index(2))
print(name.index(2,2,-1)) index(self, value, start=None, stop=None)
输出:
1
3
sort (方法用于对列表进行排序(从小到大))
name = [1,2,5,56,3]; kk = ['a','k','az','de'] 只能是纯数字 或 纯字符串
name.sort(); kk.sort()
print(name,kk)
输出:
[1, 2, 3, 5, 56] ['a', 'az', 'de', 'k']
reverse (方法将列表中的元素反向存放)
name = [1,2,5,56,3]
name.reverse()
print(name)
输出:
[3, 56, 5, 2, 1]
字典 dict
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组
创建与查看字典 :
dic = { 'name' : ['大猛','小孟'],'age':16}
print(dic['name'][0])
print(dic['age'])
输出:
大猛
16
增加键值对
dic = { 'name' : ['大猛','小孟'],'age':16}
dic["city"] ="beijing" 如果字典中没有这个键(key)则添加,如果有则覆盖
print(dic)
setdefault 有键(key),不做任何改变,没有才添加。
dic = { 'name' : ['大猛','小孟'],'age':16}
dic.setdefault('age',45)
print(dic)
dic.setdefault('city','beijing')
print(dic)
输出:
{'name': ['大猛', '小孟'], 'age': 16}
{'name': ['大猛', '小孟'], 'city': 'beijing', 'age': 16}
删除键值对
pop
dic = { 'name' : ['大猛','小孟'],'age':16}
print(dic.pop('age')) 有返回值为key对应的值
print(dic)
输出:
16
{'name': ['大猛', '小孟']}
dic = { 'name' : ['大猛','小孟'],'age':16}
del dic['age'] 没有返回值
print(dic)
输出:
{'name': ['大猛', '小孟']}
dic = { 'name' : ['大猛','小孟'],'age':0}
print(dic.popitem()) 随机删除 有返回值
print(dic)
输出:
('age', 0)
{'name': ['大猛', '小孟']}
dic = { 'name' : ['大猛','小孟'],'age':0}
dic_clear = dic.clear() 清空字典
print(dic,dic_clear)
输出:
{} None
改变键值对
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
print(dic2)
输出:
{'name': 'jin', 'sex': 'male', 'age': 18, 'weight': 75}
dic = { 'name' : ['大猛','小孟'],'age':16}
dic["age"] =66 覆盖age
print(dic)
输出:
{'name': ['大猛', '小孟'], 'age': 66}
其他操作
keys() 以列表的形式返回所有键的信息
values() 以列表的形式返回所有值的信息
items() 以列表的形式返回所有键值对的信息
>>> dic = { 'name' : ['大猛','小孟'],'age':16}
>>> print(dic.values())
dict_values([16, ['大猛', '小孟']])
>>> print(dic.keys())
dict_keys(['age', 'name'])
>>> print(dic.items())
dict_items([('age', 16), ('name', ['大猛', '小孟'])])
字典的循环
dic = {"name":"wang","age":19}
for key in dic:
print(key)
for item in dic.items():
print(item)
for key, value in dic.items():
print(key,value)
输出:
name
age
('name', 'wang')
('age', 19)
name wang
age 19
集合set
可变的数据类型,但是他里面的元素必须是不可变的数据类型,无序,不重复,他有两个特点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系
创建集合 :a = {1,2,4,3,"aaaa"} 或 a = set({1,2,4,3,"aaaa"})
增加元素
add()
set1 = {'ad','adff','wangg','iou'}
set1.add('iiiiii')
print(set1)
输出
{'wangg', 'iou', 'adff', 'iiiiii', 'ad'}
update()
set1 = {'ad','adff','wangg','iou'}
set1.update('ill') 每一个字母会被当作一个独立的一个元素,
print(set1)
set1.update(['ad','fg']) 加入字符串要用列表加入
print(set1)\
输出:
{'i', 'ad', 'l', 'adff', 'iou', 'wangg'}
{'i', 'ad', 'l', 'fg', 'adff', 'iou', 'wangg'}
删除元素
remove
set1 = {'ad','adff','wangg','iou'}
set1.remove('ad') 指定删除一个元素
print(set1)
输出:
{'iou', 'adff', 'wangg'}
pop()
set1 = {'ad','adff','wangg','iou'}
set1.pop() 随机删除一个元素 有返回值
print(set1)
输出:
{'adff', 'ad', 'wangg'}
set1.clear() 清空集合
print(set1)
del set1 删除集合
print(set1)
集合的其他操作 交集、并集、差集、反交集、子集与超集、不可变集合(让集合变成不可变类型)
交集:(用&或intersection())
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print(a & b)
print(a.intersection(b))
输出
{4, 5}
{4, 5}
并集(| 或者 union())
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print(a | b)
print(a.union(b))
输出
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
差集(- 或者 difference())
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print(a - b)
print(a.difference(b))
输出
{1, 2, 3}
{1, 2, 3}
反交集(^ 或者 symmetric_difference())
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print(a ^ b)
print(a.symmetric_difference(b))
输出
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
子集与超集(若a是b的子集,那b一定是b的超集)
a = {1,2,3}
b = {1,2,3,4,5,6}
print(a < b)
print(a.issubset(b)) 这两个相同,都是说明a是b子集。
print(b > a)
print(b.issuperset(a)) 这两个相同,都是说明a是b超集
frozenset()让集合变成不可变类型
s = frozenset('aabbcc')
b = {4,5,6,7,8}
frozenset('b')
print(s,type(s))
print(b,type(b))
输出
frozenset({'b', 'a', 'c'}) <class 'frozenset'>
frozenset({8, 4, 5, 6, 7}) <class 'frozenset'>