python之路(sed,函数,三元运算)

python之路(sed,函数,三元运算)

一、sed集合

1、set无序,不重复序列

2、创建

 1 se = {11,22,33,33,44}
 2 list() #只要是一个类加上()自动执行 list __init__
 3 list = [11,22]
 4
 5 s1 = set(list)
 6 print(s1)
 7
 8 #创建集合
 9 s1 = {11,22}
10 s2 = set(‘可循环的‘)
11
12 #操作集合
13 s = set()
14 print(s)
15 s.add(123)#可追加不可重复
16 s.add(123)
17 s.clear()
18 print(s)

3、功能

 1 #取不同都元素
 2 s1 = {11,22,33}
 3 s2 = {22,33,44}
 4 s1.difference(s2) #s1中存在s2中不存在的11
 5 s2.difference(s1) #s2中存在s1中不存在的44
 6 s3 = s1.symmetric_difference(s2)#取s1,s2不同的值11,44
 7 print(s3)
 8 s1.difference_update(s2)#把s1中存在s2中不存在的更新到s1
 9 s1.symmetric_difference_update(s2)#取s1,s2不同的值11,44更新到s1
10 print(s1)
11
12
13 #删除
14 s1 = {11,22,33}
15 s1.discard(11) #指定移除11,如果没有移除对象不报错也不移除
16 s1.remove(1111)#指定移除,如果额没有移除对象,则报错
17 ret = s1.pop()#随机移除,移除内个元素,就把内个元素赋值给ret
18 print(ret)
19
20 #取并集
21 s1 = {‘aa‘}
22 list = [11,22,33,44]
23 s1.update(list) #加一个迭代的元素,更新到s1,s1的初始值不能为空
24 print(s1)
25
26
27 s1 = {‘aa‘}
28 list = [11,22,33,44]
29 s1.update(list) #加一个迭代的元素,更新到s1,s1的初始值不能为空
30 print(s1)

二、函数

1、函数结构

1 # def f1():
2 #     asdad
3 #     adfasad
4 #     adsfasdf
5 # 1、def关键字,创建函数
6 # 2、函数名
7 # 3、()
8 # 4、函数体
9 #5、返回值

2、函数特性

1 def f1():
2     print(123)
3     return ‘111‘
4     print(456)
5 ret = f1()    #下函数中,一旦执行return,函数执行过程立即终止
6 #默认返回值None

3、各种参数

 1 #1、普通参数(将严格按照顺序讲师级参数赋值给形式参数)
 2 #2、默认参数(必须防止在参数列表的最后)
 3 #3、指定参数(将实际参数赋值给形式参数)
 4 #4、*  默认将传入的参数全部放在一个元组里,f1(*li)
 5 #  **  默认将传入的参数全部放在一个字典里,f1(**dic)
 6
 7 def send(xxoo,content,xx):         #普通参数一一对应
 8     print(‘发送成功‘,xxoo,content,xx)
 9     return True
10 while True:
11     em = input(‘输入邮箱‘)
12     result = send(em,‘SB‘,‘ok‘)
13     if result == True:
14         print(‘成功‘)
15     else:
16         print(‘失败‘)
17
18
19 def send(xxoo,content,xx=‘ok‘):      #默认参数,可以输入两个,则xx等于ok,输入三个则xx等于输入值
20     print(‘发送成功‘,xxoo,content,xx)   #如果给某个参数设置为默认参数,那么这个参数必须放在最后
21     return True
22 send(‘name‘,‘zk‘)
23
24 def send(xxoo,content):     #指定参数
25     print(xxoo,content)
26     return True
27 send(content=‘123‘,xxoo=‘abc‘)
28
29
30 def f1(*args):       #动态参数*
31     print(args)
32 f1(11,22,33,44)         #参数放在一个元组中
33
34 li = [11,22,33,44]
35 f1(li)    #把列表作为一个元素
36 f1(*li)    #把列表里的每一个元组作为元组里的一个元素
37
38
39 def f1(**args):       #动态参数**
40    print(args)
41 f1(name=‘alex‘)         #指定参数放在一个字典中
42 dic={‘k1‘:‘v1‘,‘k2‘:‘v2‘}
43 f1(kk=dic)
44 f1(**dic)   #把字典赋值给动态参数

3、格式化输出

 1 #格式化输出
 2 #str format格式化输出
 3 s1 = "i am {0}, age {1}".format("alex", 18)
 4 print(s1)
 5 s2 = "i am {0}, age {1}".format(*["alex", 18])
 6 print(s2)
 7
 8 s1 = "i am {name}, age {age}".format(name=‘alex‘, age=18) #前面写的name后面传入参数时必须也是name
 9 dic={‘name‘:‘alex‘,‘age‘:18}
10 s2 = "i am {name}, age {age}".format(**dic)
11 print(s1,‘\n‘,s2)

4、def执行顺序

1 def f1(a1, a2):
2     return a1 + a2
3 def f1(a1, a2):
4     return a1 * a2
5 ret = f1(8, 8)   #从上向下执行 ret=64,第一个f1不生效
6 print(ret)

5、传参数

1 def f1(a1):
2     a1.append(999)
3 li = [11,22,33,44]
4 f1(li)
5 print(li) #li=11,22,33,44,999#强调传的是引用所以列表会发生改变

6、全局变量

 1 #全局变量,所有的作用域里都可读
 2 #***对全局变量进行【重新赋值】,需要global***
 3 NAME = ‘zkk‘
 4 def f1():
 5     age = 18
 6     global NAME # 表示,name是全局变量
 7     NAME = "123"
 8     print(age, NAME)
 9 def f2():
10     age = 19
11     print(age, NAME)
12 f1()
13 f2()
14 print(NAME)

三、三元运算

 1 if 1 == 1:
 2     name = ‘alex‘
 3 else:
 4     name = ‘SB‘
 5 print(name)
 6
 7 name = ‘alex‘ if 1 == 1 else ‘sb‘  #if后面是条件,条件成立执行if前面的,否则执行else后面的
 8 print(name)
 9
10 def f1(a1):
11     return a1 + 100
12 ret = f1(10)
13 print(ret)
14 f2 = lambda a1: a1 + 100 #f2函数名,a1参数,函数体a1+100,只能一行
15 r2=f2(1)
16 print(r2)

四、文件操作

1、打开文件

 1 # f = open(‘db‘, ‘r‘) # 只读
 2 # f = open(‘db‘, ‘w‘) # 只写,先清空原文件
 3 # f = open(‘db‘, ‘x‘) # 文件存在,报错;不存在,创建并只写
 4 # f = open(‘db‘, ‘a‘) # 追加
 5
 6 f = open(‘db‘,‘r‘,encoding=‘utf-8‘)
 7 data = f.read()
 8 print(data,type(data))
 9 f.close()
10
11 f = open(‘db‘,‘r+‘,encoding=‘utf-8‘)
12 #如果模式无b,则read按照字符读取
13 data = f.read(1)
14 print(f.tell()) #调整你当前的位置(字节)
15 f.seek(f.tell())#把当前的指针位置向后覆盖,以字节的方式找
16 f.write(‘777‘)
17 f.close()

2、操作文件

 1 tell() 获取当前指针位置(字节)
 2 seek(1) 指针跳转到指定位置(字节)
 3
 4 f = open(‘db‘,‘a‘)  #强刷刷新
 5 f.write(‘123‘)
 6 f.flush()
 7 input(‘assdafa‘)
 8
 9 f = open(‘db‘,‘w‘)
10 f.readable()
11 print(f.readable())  #查看是否可读
12
13
14 f = open(‘db‘,‘r+‘,encoding=‘utf-8‘)
15 f.seek(3)
16 f.truncate()#截断,根据指针位置
17 f.close()
18
19 for循环文件对象 f=open(xxx)
20 for line in f:
21 print(line)

3、关闭文件

 1 f.close()
 2 with open(‘xb‘) as f:
 3     pass
 4
 5 with open(‘db‘,‘r‘,encoding=‘utf-8‘) as f,open(‘db2‘,‘w‘,encoding=‘utf-8‘) as f2:
 6     times =0
 7     for line in f1:         #一边读取一边写
 8         if times <= 10:
 9             f2.write(line)
10         else:
11             break
12
13
14 with open(‘db‘,‘r‘,encoding=‘utf-8‘) as f1,open(‘db2‘,‘w‘,encoding=‘utf-8‘) as f2:
15     for line in f1:
16         print(line,type(line))
17         new_str = line.replace(‘alex‘,‘st‘)
18         f2.write(new_str)#同时打开两个文件

五、json

1 import json
2 inp_str =‘[11,22,33,44]‘
3 inp_list=json.loads(inp_str)  #字符串转换成列表
4 print(inp_list)
5
6 inp_str =‘{"k1":123, "k2": "wupeiqi"} ‘  #内部必须是双引号
7 inp_dic = json.loads(inp_str)  # 根据字符串书写格式,将字符串自动转换成 字典类型
8 print(inp_dic)

六、内置变量

 1 # utf-8 一个汉字:三个字节
 2 # gbk 一个汉字:二个字节
 3 # utf-8
 4 # 一个字节8位,一个汉字三个字节
 5
 6
 7 #字节转化成字符串
 8 new_str = str(bytes("李杰", encoding="utf-8"), encoding="utf-8")
 9 new_byt=bytes("李杰", encoding="utf-8")
10 new_str2 = str(b‘\xe6\x9d\x8e\xe6\x9d\xb0‘,encoding=‘utf-8‘)
11 print(new_str2,new_byt)
12
13
14 a=bytes(‘李杰‘,encoding=‘utf-8‘)
15 b=bytes(‘张‘,encoding=‘utf-8‘)
16 print(a,‘\n‘,b)
时间: 2024-10-24 20:19:31

python之路(sed,函数,三元运算)的相关文章

python函数 | 三元运算

三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值 格式:[on_true] if [expression] else [on_false] 三元运算只适用于简单的if else判断,再多一层if判断就不适用了. 举例说明:比大小,大者返回 写一个函数 def max_min(a,b): if int(a) > int(b): return a else: return b print(max_min(1,3)) 三元运算 def max_min(a,b): z = a if a > b

Python基础-lambda表达式与三元运算

一.lambda表达式 1 >>> def add(x,y): #定义一个加法函数 2 return x+y #返回两个参数的相加的值 3 4 >>> z=f(3,4) 5 >>> print(z) 6 7 #调用加法函数返回7 7 >>> lambda x,y:x+y 8 <function <lambda> at 0x0000020F385B86A8> 9 #可以看到lambda是一个 function(函

python 全栈 python基础 (五)三元运算 字符编码 元组 集合 三级菜单优化!

三元运算 条件判断不能加冒号: a=3 b=5 c=a if a<b else b oct() 转成八进制的简写:16进制 标志:BH为后缀或是0x为前缀hex() 转成16进制 元组 跟列表是一样一样的!但它是只读列表,没有更改的权限! dir() 把传入的数据类型的,所有方法以列表的形式返回.作用: 明确的表示 元组里存储的数据是不应该被修改的!!! list(tuple元组) 变成列表 tuple(list列表) 变成元组 集合 setlinux ={"","&q

Python全栈day18(三元运算,列表解析,生成器表达式)

一,什么是生成器 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他数据类型需要调用自己内置的__iter__方法),所以生成器是可迭代对象. 二,生成器分类在python中的表现形式 1,生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间,挂起函数状态,以便下次从它离开的地方继续执行day18-5.py def test(): yield 1 yield 2 g=test() print(g) print

python之路--day13---函数--三元表达式,递归,匿名函数,内置函数-----练习

1.文件内容如下,标题为:姓名,性别,年纪,薪资 egon male 18 3000 alex male 38 30000 wupeiqi female 28 20000 yuanhao female 28 10000 要求: 从文件中取出每一条记录放入列表中, 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式 2 根据1得到的列表,取出薪资最高的人的信息 3 根据1得到的列表,取出最年轻的人的信息 4 根据1得到的列

python之路 初始函数

python之初识函数: (一)为什么要使用函数:  首先举一个例子,假如我们现在要计算"hello world"这个字符串的长度,我们可以怎么计算1,直接print(len(hello world)) 就可以计算长度,那么现在   用len()这个函数了,我们还可以怎么计算呢,看下面代码 #利用for 循环计算字符串长度 s = "hello world" length = 0 for i in s: length += 1 print(length) 这样我们也

python之路——初识函数

为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起来写一下. s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) 好了,功能实现了,非常完美.然后现在又有了一个需求,要计算另外一个字符串的长度,"hello eva". 于是,这个时候你的代码

python之路_函数实例及装饰器介绍

一.习题讲解 1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组.例如:[('红心',2), ('草花',2), -('黑桃,'A')] def cards(): num=[] for v in range(2,11): num.append(v) num.extend(['J','Q','K','A']) type=['红心','草花','方块','黑桃'] result=[] for i in num: for j in type: result.append((j,i)) re

python 之路 day10 函数

一:深浅拷贝 :  s = [ [1,2] ,3  ,4  ]       s1 = s.copy()  ,   s1[0][0] = 8 ,  print (s) ,print (s1),   两个的结果都为 [   [8,1] ,  3 ,4  ]   首先是因为列表是可以修改的,再一个跟指针有关系,具体图如下: 浅拷贝(shallow copy) 只会拷贝第一层,如上面的 3,4 ,因为只有一个指针指向 深拷贝(deep copy): 全部克隆  需要模块, import copy 二 :

第三章、三元运算、文件处理、函数

第三章.三元运算.文件处理.函数 三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 # 可以写成如下: val = 1 if 条件成立 else 2 文件处理 读,写,修改 读 f = open(file='d:/*.txt', mode='r', encoding='utf-8') date = f.read() f.close() r是只读模式,rb是以二进制读文件 第三方模块 chardet检测二进