模块,数据类型,判断循环
初识python模块
- python带有丰富的标准库与第三方库,标准库一般存储在C:\Program Files\Python\Lib根目录下,而用户自行安装的库一般安装在C:\Program Files\Python\Lib\site-packages目录下。
- 当在一个工程中新建文件名时,不能将文件名与官方库名相同,否则python编译器会首先查找当前目录下的.py文件当做需要引用的目标库。
- 自带模块举例:打印文件相对路径
import sys
print(sys.argv)
数据类型
数字:
int(整型),float(浮点数),complex(复数)
布尔值:
真或假,1或0
bytes类型:
在python3中,对文本和二进制数据进行了更为清晰的区分,文本总是Unicode,用str数据类型表示,二进制数据类型由bytes类型表示。例如:
print("渣渣晖".encode("utf-8")) ##b'\xe6\xb8\xa3\xe6\xb8\xa3\xe6\x99\x96'
print(b'\xe6\xb8\xa3\xe6\xb8\xa3\xe6\x99\x96'.decode("utf-8")) ##渣渣晖
字符串:
- 最简单的字符串:"hello world"
- 在python中,字符串可使用+号进行拼接,但每次创建字符串时候需要在内存中开辟一块连续的空间,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
- 字符串格式化输出:字符串是 %s;整数是 %d;浮点数是%f
name = "zzh"
print("I am %s" %(name))
- 首字母大写:
print(name.capitalize())
Zzh - 统计字符出现的次数:
print(name.count("z"))
2 - 居中补全:
print(name.center(20,'-'))#共打印20个字符,不够的用-来补充
--------zzh--------- - 靠右补全:
print(name.rjust(20,'+'))
+++++++++++++++++zzh - 靠左补全:
print(name.ljust(20,'*'))
zzh***************** - 判断字符串以什么结尾:
print(name.endswith('h'))
True - 查找字符的下标索引→:
print(name.find('z'))#从左往右第一个出现的
0 - 查找字符的下标索引←:
print(name.rfind('z'))#从右往左第一个出现的
1 - 输出格式化:
print("i am {name}".format(name="zzh"))
或者print("i am {name}".format_map({"name"="zzh"}))
i am zzh - 是不是英文字符:
print(name.isalpha())
True - 是不是英文字符和数字:
print(name.isalnum())
True - 是不是十进制:
print('123'.isdecimal())
True - 是不是合法变量名:
print(name.isidentifier())
True - 是不是大写:
print(name.isupper())
False - 是不是小写:
print(name.islower())
True - join方法:
print('+'.join(['1','2','3']))
1+2+3 - 大写转小写:
print('ZZH'.lower())
zzh - 小写转大写:
print('zzh'.upper())
ZZH - 大小写交换:
print("Zzh".swapcase())
zZH - 输出时去掉两侧空格和回车:
print(' zzh\n'.strip)
zzh - 字符串替换:
print(name.replace('z','Z',1))#把z替换成Z,只替换一个
#Zzh - 根据空格分割成列表:
print("I am zzh".split(" "))
#['I', 'am', 'zzh'] - 字符串无法像列表一样进行修改,赋予新值。
列表(list):
- 创建列表:
names = ['ZhangSan','LiSi','WangWu']
或者names =list( ['ZhangSan','Lisi','WangWu'])
- 列表生成式:
[i*2 for i in range(6)]
##[0,2,4,6,8,10] - 列表切片:
print(names[2])
#取列表第二个元素print(names[-1])
#取列表倒数第一个元素print(names[0:2])
#从第0个元素取到第1个元素(左闭右开);print(names[-2:])
#从倒数第二个元素取到最后一个元素 - 列表追加:
names.append('ZhaoLiu')
#列表末尾追加元素names.insert(1,'ZhaoLiu')
#在位置1处插入元素 - 列表修改:
names[3] = "ZZH"
#把修改位置3的元素 - 列表删除:
names.remove("ZZH")
#删除元素del names[3]
#删除3号位置的元素names.pop()
#删除末尾的最后一个元素names.pop(0)
#删除第0个元素 - 列表索引:
print(names[names.index("LiSi")])
#查找李四的位置索引并打印该元素 - 列表统计:
print(names.count("ZhangSan"))
#统计列表中张三的数量 - 列表清除:
names.clear()
#列表清除 - 列表反转:
names.reverse()
#倒置列表 - 列表排序:
names.sort()
#列表根据ASCII码顺序排序 - 列表扩展:
names.extend(names2)
#合并两个列表 - 列表长度:
len(names)
#获取列表长度 - 列表复制:python中分为浅copy和深copy,浅copy只复制一层列表,在列表中嵌套的列表只复制了指向的地址,当原列表中的第二层内容修改时,复制的列表中也会更正发生改动。
浅copy,只复制浅层信息:
names = ['ZhangSan','LiSi',[1,2,3],'WangWu']
names2 = names.copy()
names[1] = 'zzh'
names[2][2] = 0
print(names)
print(names2)
['ZhangSan', 'zzh', [1, 2, 0], 'WangWu']
['ZhangSan', 'LiSi', [1, 2, 0], 'WangWu']
直接赋值则直接将names的地址给到names2,等于起别名:
names = ['ZhangSan','LiSi',[1,2,3],'WangWu']
names2 = names
names[1] = 'zzh'
names[2][2] = 0
print(names)
print(names2)
['ZhangSan', 'zzh', [1, 2, 0], 'WangWu']
['ZhangSan', 'zzh', [1, 2, 0], 'WangWu']
深复制,复制所有内容:
import copy
names = ['ZhangSan','LiSi',[1,2,3],'WangWu']
names2 = copy.deepcopy(names)
names[1] = 'zzh'
names[2][2] = 0
print(names)
print(names2)
['ZhangSan', 'zzh', [1, 2, 0], 'WangWu']
['ZhangSan', 'LiSi', [1, 2, 3], 'WangWu']
- enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和下标,一般用在for 循环当中.
print(enumerate(names))
#(1,"ZhangSan")(2,"LiSI")
元组(tuple):
- 元组可理解为不可变的列表
- 创建元组:
name_tuple = ('ZhangSan','LiSi','WangWu')
或name_tuple = tuple(('ZhangSan','LiSi','WangWu')
- 其他多数操作同列表
字典(dict):
- 字典为无序的,故无下标,需要使用字典的key进行查找
- 创建字典:
person = {"name":"zzh","age":23}
或person = dict({"name":"zzh","age":23})
- 字典索引:
print(person.keys())
##dict_keys(['name', 'age']) - 字典内容:
print(person.values())
##dict_values([23, 'zzh']) - 字典查找:
print(person["name"])#当列表中无name这个元素时,会出错
或者print(person.get("name"))#当列表中无name这个元素时,会返回None
## zzh - 字典修改和创建:
person["name"]=“渣渣晖”#当元素存在时修改,不存在时添加
- 字典创建setdefault:
person.setdefault("zzh","18")
#先查找字典有没有这一项,如果有,则不进行修改;如果没有,则创建新值。 - 将字典转成列表:
print(person.items())
## [('name', 'zzh'), ('age', 23)] - 字典删除:
del person["age"]
或者person.pop("age")
- 判断在不在字典中:
print('sex' in person)
## False
集合:
- 集合是一个无序的,不重复的数据组合,主要用于:1.去重,将一个列表变成集合,就自动去重了。2.关系测试,测试两组数据之间的交集差集并集等关系。
- 集合创建:
list_1 = {1,3,5,7}
或者list_1 = set([1,3,5,7])
- 集合添加一项:
list_1.add(9)
#添加一项 - 集合添加多项:
list_1.update([9,11,13])
#添加多项 - 集合删除:
list_1.remove(9)#若删除元素在集合中不存在,会报错
或者list_1.discard(9)#若删除元素在集合中不存在,不会报错
- 集合长度:
len(list_1)
- 测试x是否在s中:
x in s
- 测试x是否不在s中:
x not in s
- 集合运算方法1:
list_1 = [1,4,5,7,3,6,7,8]
list_1 = set(list_1)#将列表转换为集合
list_2 = set([2,3,0,4,6])
list_3 = set([1,7,8])
print(list_1,list_2,type(list_1))
print(list_1.intersection(list_2))#取列表交集
print(list_1.union(list_2))#取列表的并集
print(list_1.difference(list_2))#求列表的差集,1有2没有的部分
print(list_1.issubset(list_2))#判断1是不是2的子集
print(list_1.issuperset(list_3))#判断1是不是3的父集
print(list_1.symmetric_difference(list_2))#对称差集,取出1和2有差异的部分
print(list_3.isdisjoint(list_1))#1和3是否没有交集
{1, 3, 4, 5, 6, 7, 8} {0, 2, 3, 4, 6} <class 'set'>
{3, 4, 6}
{0, 1, 2, 3, 4, 5, 6, 7, 8}
{8, 1, 5, 7}
False
True
{0, 1, 2, 5, 7, 8}
False
- 集合运算方法2:
list_1 = {1, 4, 5, 7, 3, 6, 7, 8}
list_2 = set([2, 3, 0, 4, 6])
print(list_1 & list_2) # 取交集
print(list_1 | list_2) # 取并集
print(list_1 - list_2) # 取差集
print(list_1 ^ list_2) # 取对称差集
判断,循环
三元运算:
result = 值1 if 条件 else 值2
if-elif-else:
a = input("请输入数字a:")
b= input("请输入数字b:")
if a>b:
print("a更大")
elif a==b:
print("一样大")
else:
print("b更大")
while-else:
i = 0
while i<=10:
print(i)
i +=1
else:
print('跳出while循环')
for-else:
for i in range(10):
print("loop:", i )
else:
print("Finish!")
参考:
https://www.cnblogs.com/alex3714/articles/5465198.html
https://www.cnblogs.com/alex3714/articles/5717620.html