1.python排序sort,sorted()

import operator
#sorted方法进行排序 asi编码
list=['q','e','r','4','3']
#获取列表中下标为1,2,3的元素
b=operator.itemgetter(1,2,3)(list)
print(b)
print(sorted(list))
#对字典进行排序,返回key的列表
dic={'testD':'4','testB':'2','testC':'3','testA':'5'}
print(sorted(dic))
#根据key排序返回元组以列表的形式存在===0
dic_key=sorted(dic.items(),key=operator.itemgetter(0))
#根据kvalue排序返回元组以列表的形式存在====1
dic_value=sorted(dic.items(),key=operator.itemgetter(1))
print(dic_key)
print(dic_value)
#将[('testA', '5'), ('testB', '2'), ('testC', '3'), ('testD', '4')]
#转换成字典
dic_n={}
for i in dic_value:
    dic_n[i[0]]=i[1]
print(dic_n)
sort()和sorted的区别 sort()改变原对象,sorted()不改变原对象,生成一个新的对象
sort
list.sort()

2.去掉元组中的逗号转化成列表

        用过的场景:pymysql查询数据库返回的值

list_new=[]
Data=('a',)
def func(data):
    for i in data:
        list_new.append(i[0])
    return list_new
print(func(Data))

3.元组

#tuple,小括号用逗号隔开,存储多个数据,元组数据不可修改,列表是可修改的,单个元组要加逗号
a=('c',2,3)
b=(5,)
print(type(a))
print(type(b))
#常用方法,支持下标
print(a[2])
#长度统计len()
print(len(a))
#index() 返回数据所在下标
print(a.index("c"))
#count()统计集合中某个数据的个数
print(a.count('c'))
#元组里面的列表 是支持修改的
tuple1=("a","b",["c","d","e"],"f")
list1=tuple1[2]
list1[1]="ddd"
print(tuple1)

4.一些公共操作符

"""
+  合并  使用对象 str ,list,tuble
*  复制  使用对象 str ,list,tuble
"""
"""in
    not in   在里面不在里面  使用对象str list  tuple 字典 集合,返回true 或者false
"""
"""len() 返回对象的长度
    del(list[下标]) 删除下标所在数据
    del 目标 或者del(目标)  删除目标(集合,列表,str等)
    max() 返回最大值
    min() 返回最小值
    range(开始,结束,步长)  不包含结束数据,不写开始默认从0开始,不写步长,默认为1,一般与for循环搭配使用
    enumerate()  可遍历对象,返回元组   start 不写,默认为0(列表里面的下标)   
"""
list=['a','b','c','d','e']
list1=['aa','bb','cc','dd','ee']
for s in enumerate(list,start=0):
    print(s)

#将列表合并成字典
dict={list[i]:list1[i] for i in range(len(list1))}

print(dict)
#列表推导式:简化成一行代码
print([i for i in range(10)])
# 一行代码求和   print(sum(i for i in range(10)))

5.函数及函数返回

"""
def 函数名():
    函数内容
    调用 函数。直接函数名加()
"""
#例如  实参 单函数名调用
def hanshu():
    input("请输入密码")
    print('真棒')
hanshu()
#   形参  函数名加参数   接收真实数据
def add_num(a,b):
    print(a+b)
add_num(2222,4)
#函数返回值  return 退出当前函数
def add_num1():
    return 9+6
print(add_num1())


函数返回
#函返回  程序遇到return 1.会返回值  2.return后面的代码不执行
def A():
    return 'a'
    return 'b'
    print(22)
A()
#要返回多个
def B():
    return 1,2  #返回的元组
#  或者返回列表,元组,字典都可
    return (1,2,3)
    return [1,2,3]
    return {"a":"b"}
print(B(),A())

6.列表及常用方法

#列表格式:中括号引号逗号
list=["a","b","c"]

#常用方法
#列表长度 len()
print(len(list))
#index()  输出列表中的字符下标
print(list.index("b"))
#append()  向列表末尾增加数据
#list.append("aa")  增加单数据
#list.append(['aa','bb'])  增加一个列表,整体

#extend()将数据拆开成单个增加到末尾
#list.extend("aaa") 拆开成3个a
#list.extend(["aa","bb"])拆开成aa,bb
#insert()  指定增加在列表中的某个位置
#list.insert(2,"awa") 将awa增加在列表中的第三个位置
#list.pop() 删除列表中的数据,默认删除最后一个,可返回一个结果,可指定删除(下标指定)
#a=list.pop(2)
#print(a)
#remove() 指定删除列表中的某个数据,不可返回一个结果
#list.remove("a") 删除a
#del 列表  或者 del(列表)删除整个列表  和删除指定下标的数据
#del list  或者del(list)
#del list[1]   删除下标为1的数据
#clear() 清空列表
#list.clear()  清空list中的数据
#修改指定下标的数据
#list[0]="修改"
#逆序列表 reverse()
#list.reverse()
#sort()  排序,默认升序
o=["1","1","4","2"]
#o.sort() 升序 相当于o.sort(reverse=False)
#o.sort(reverse=True) 降序
#copy() 复制数据
#list_2=list.copy() 复制list 成list_2
print(o)


#列表嵌套
list_l=["q","w","e","r"]
#向list_1中增加一个列表后,list_1中就是列表嵌套
list_l.append(["qq","ee"])
print(list_l)

7.字典及用法

#字典:大括号,键值对,键值对之间用逗号隔开
#有数据的字段
dict_name={'niubi':'class','wc':'niu'}
#空字典
dict_name1={}
#空字典,dict()函数
dict_name1=dict()

#修改字典中数据,dict[key]=value ,原有字典有该key,即修改,没有该key即新增
dict_name['key']="价值"
print(dict_name)
dict_name["性别"]="人妖"
print(dict_name)
#删除字典和指定存在的键值对del() del 字典
#del dict_name
#del(dict_name)
del dict_name['性别']
#clear() 清空字段
dict_name.clear()
print(dict_name)

#字典查找
#key值查找
kkk={"aa":"bb","cc":"c","dd":"d"}
print(kkk["aa"])
#get()方法
print(kkk.get("aa"))
#查找key不存在  返回括号里的值,不输入没有的话返回为None
print(kkk.get("aaa",0))
#获取所有的key  key() 返回可迭代对象
print(kkk.keys())
#获取所以的values  values() 返回可迭代对象
print(kkk.values())
#items()  查找字典中所以键值对 返回可迭代对象,元组里面的列表,列表里面的元组1是key,元组2是value
print(kkk.items())

8.将字典的key,value写入csv文件,换格写+py操作csv文件

dic={'A':'a','B':'b','C':'c'}
file=open('dic.csv','w')
#item()遍历字典返回元组以列表的形式存在
print(dic.items())
for k,y in dic.items():
    print(k,y)
    file.write(str(k)+','+str(y)+'\n')
#写入完之后要关闭文件
file.close()
import csv
#以读取的方式打开文件
file_row=open('ccssvv.csv','r')
table=csv.reader(file_row)
#跳过首行读取
table.__next__()
#逐行读取csv文件
for row in table:
    print(row[0])

#写入文件   newline=""跳过空行
flie_jump=open('file_2.csv','w',newline="")
file_write=csv.writer(flie_jump)

9.拆包,局部变量,全局变量,形参,实参,关键字参数等

# 函数内部的叫局部变量,外部顶格写的叫全局变量
# 修改函数内部的变量为全局变量,先 声明 global 变量 ,然后在给变量赋值
#函数位置参数  位置顺序要对应,少传一个会报错
def N(name,age,gender):
    print(f'名字是{name},年龄是{age},性别是{gender}')
N('TOM',20,'男')
#关键字参数  顺序可不对应    与位置参数一起时,位置参数必须在关键字参数前面
N(age=28,name='mike',gender='女')
N('TOM1',gender='666',age=20)
#缺省参数  用来给函数提供默认值
def n(na,ag,gen='人妖'):
    print(f'名字是{na},年龄是{ag},性别是{gen}')
n('牛牛','20')

#不定长参数
def b(*args): #*args 返回一个元组
    print(args)
b(1,2,3)
def c(**kwargs):  # **kwargs 返回一个字典
    print(kwargs)
c(nam='包裹')

#元组拆包  将函数返回值赋给2个变量(返回值有多少就用多少变量接收)
def num_t():
    return 100,200,400
num1,num2,num3=num_t()
print(num1)
print(num2)
print(num3)
#字典拆包  字典拆出来的是key,再提取value
dict={'a':'名字','b':'性别'}
#print(dict['a'])
w,e=dict
print(w)
print(e)
print(dict[w])

10.python中文件的相对路径

import os
#获取当前py文件的路径
path=os.getcwd()
#获取当前文件的上一级目录(一个点),上两级目录(2个点)
path_1=os.path.abspath(os.path.dirname(path)+os.path.sep+'.')
print(path_1)
#切换到当前文件的上一级目录下的playbook目录下
file_path=path_1+'\playbook'
print(file_path)

11.遍历

#遍历集合:依次按顺序访问序列中的每一个数据
#for 循环遍历,依次打印集合里面的数据
Name_set=('tom','mike','dema')
for i in Name_set:
    print(i)

#while循环遍历列表。依次打印列表里面的数据
Name_list=['a','b','c']
q=0
while q<len(Name_list):
    print(Name_list[q])
    q+=1
#遍历字典
dict_a={'ke':'value','age':250,'姓名':'德玛西亚'}
#依次打印字典中所有的key
for key in dict_a.keys():
    print(key)
#依次打印字典中所有的kvalue
for value in dict_a.values():
    print(value)
#依次打印字典中所以的键值对,返回元组
for kv in dict_a.items():
    print(kv)
#将获取到的键值对进行拆包
for k,v in dict_a.items():
    print(f'{k}={v}')
#遍历集合
set1={1,2,2,2,23,4,5}
for p in set1:
    print(p)

12.集合

#大括号,用逗号隔开,集合会去重,不支持下标,无序
#有数据的集合
set_y={1,2,3,4,4,'q','廖'}
set_s=set('abcdert')
print(set_s)
print(set_y)
#无数据的集合set()方法
set_w=set()
print(type(set()))

#集合常用方法 add(),update()
set_y.add('ad') #存在则不增加,不存在则增加,单一数据
print(set_y)
#update() 增加数据序列,不能单一数据
set_y.update(['qq','ww'])
print(set_y)

#集合常用删除方法 remove(),discard(),pop()
set_1=set('abcdefg')
#remove()  删除指定数据,如果数据不存在会报错
set_1.remove("a")
#discard() 删除指定数据,数据不存在 不会报错
set_1.discard("b")
print(set_1)
#pop() 随机删除一个数据,并且能返回该数据
set_1.pop()
print(set_1)
#in ,not in 判断数据是否存在在集合中,返回true或false
print('sss' in set_1)
print('sss' not in set_1)

13.高阶函数,map,reduce,filter,zip

#递归
#lambda   一个函数只有一句代码,化简
# def sum(x, y):
#     return x + y
p = lambda x,y:x+y
print(p(4,6))
list1=[1,2,3,4,5,6,7,8,9,10]
#map 函数  将传入的函数作用与list中每一个元素,返回一个对象
#返回的对象打印,先转换成list,例如求list1中每个元素的平方
#对象可以和tuple.list.set 转换
def z(w):
    return w**2
result_map=map(z,list1)
print(list(result_map))
#reduce函数,计算累加和  搭配functools
import functools
def func(a,b):
    return a+ b
#reduce 是计算累加,所以func 函数必须传2个参数
result_reduce=functools.reduce(func,list1)
print(result_reduce)

#filter  过滤掉不符合条件的返回一个对象
#把对象打印出来,可先转换成列表 
def func1(x):
    return x%2==0 and x>5
result_filter=filter(func1,list1)
print(list(result_filter))
#zip函数
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

random随机

import random
import string
#字母的ascii编码顺序
str1=string.ascii_letters
print(str1)
#大写字母ascii顺序
str2=string.ascii_uppercase
print(str2)
#随机取一个
random.choice(str2)
#随机取多个  .sample 生成一个列表
str3=random.sample(str2,4)
print(str3,type(str3))
# .join() 拼接,对象只能是列表
str4='_'.join(str3) #用下划线拼接列表中的元素
#生成随机标点符号
a=string.punctuation
print(a)

python3运算符查看

       https://www.runoob.com/python3/python3-basic-operators.html