[Python1]模块_数据类型_判断循环

模块,数据类型,判断循环

初识python模块

  1. python带有丰富的标准库与第三方库,标准库一般存储在C:\Program Files\Python\Lib根目录下,而用户自行安装的库一般安装在C:\Program Files\Python\Lib\site-packages目录下。
  2. 当在一个工程中新建文件名时,不能将文件名与官方库名相同,否则python编译器会首先查找当前目录下的.py文件当做需要引用的目标库。
  3. 自带模块举例:打印文件相对路径
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