首页 > 编程语言 >python基础总结

python基础总结

时间:2023-06-19 10:15:19浏览次数:49  
标签:总结 __ 10 python 返回 基础 误码 t1 print

1、Python的数据类型

答:数字(number)、字符串(string)、列表(list)、元组(tuple)、字典(dict)、集合(set)

Number/string/tuple不可更改,list/dict/set可以

 

2、列表和元组的区别

答:列表可变类型,元组不可变

3、字符串中查找字符索引位置

1) 查找第一次出现的字符

s.index(c), 找不到raise ValueError。

s.find(c), 找不到返回-1。

2)查找最后一次出现的字符

s.rindex(c), 找不到raise ValueError。

s.rfind(c), 找不到返回-1。

3)查找所有出现的字符,找不到返回空列表。

[m.start() for m in re.finditer('z', s)]

4)找指定start,end出现的字符

s.index(c,start=None, end=None)

4、获取对象的内存地址

id(s)

5、==和is的区别

==是比较值相等,is是比较内存地址相等

 

6、匿名函数

a = lambda x, y: x + y
print(a(3, 6))

7、map函数

map(func,*iterables)

可迭代对象的元素依次被func处理,组成map对象,返回迭代器,

def tes(t):
    return t*2
lis1 = [10, 5, 8]
print(list(map(tes, lis1)))
print(lis1*2)

[20, 10, 16]

[10, 5, 8, 10, 5, 8]

8、zip函数

zip(*iterables)

可迭代对象的元素对应打包成一个个元组,元组组成zip对象,返回迭代器

print(list(zip('abcdefg', range(3), range(4))))

[('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]

 

9、浅拷贝和深拷贝的区别

针对可变类型,深拷贝不会变更,浅拷贝在子对象变更时会变更,因为id一样。

 

10、两个列表如何组成字典

print(dict(zip(['n', 'a', 'x'], ['zm', 18, 'm'])))

{'n': 'zm', 'a': 18, 'x': 'm'}

 

11、列表推导式或者生成式

print([i for i in range(10) if i % 2 == 0])

[0, 2, 4, 6, 8]

 

12、函数的参数类型

1)必需参数,必须传入且顺序正确;

2)关键字参数,指定用参数名来传参,不需要指定顺序;

3)默认参数,不传参就使用默认值;

4)不定长参数,*表示参数会以元组的形式导入,**表示参数会以字典的形式导入。

13、__new__和__init__的区别

同时有__new__和__init__的时候:

1) new是在实例创建前被调用,用于创建实例,返回该实例对象,是静态方法;

Init是实例对象创建完成后被调用,用于初始化类实例,是实例方法。

2) new必有参数cls(即当前类),必有返回实例;

3) new返回的实例传给init的self,init不需要有返回值;

4) new不返回,init不会被调用。

class Tes():
    def __new__(cls, *args, **kwargs):
        print('new__')
        return super(Tes, cls).__new__(cls)

    def __init__(self):
        print('init__')


Tes()

new__

init__

 

14、super()

super(cls, self).__init__()

cls--当前类, self当前类实例,

cls.mro()

super()是返回当前类在实例的mro列表中的下一个类。

 

https://blog.csdn.net/weixin_40734030/article/details/122863308

 

15、生成器迭代器装饰器

生成器:一个返回迭代器的函数,使用yield。遇到yield会暂停并保存信息,返回yield的值,并在下一次next()方法时从当前位置继续执行。

Eg:生成斐波那契数列

def fin(n):
    a, b=0, 1
    for i in range(n):
        yield a
        a,b = b, a+b

f = fin(10)
while True:
    try:
        print(next(f), end=" ")
    except StopIteration:
        sys.exit()

0 1 1 2 3 5 8 13 21 34

 

迭代器:可以记住遍历位置,从第一个元素开始访问,只能往前不能后退。

t1=iter(iterable),t1就是迭代器,可迭代对象list/string/tuple

next(t1)去读取元素。

 

装饰器:改变函数的功能和性质,

@staticmethod

 

16、python的自省/反射

获取对象的类型、属性。

type()、id()、isinstance()、issubclass()、

17、常用模块

1、Random

random.random()

[0,1)之间的一个随机浮点数

random.randint(2, 8)

指定范围间的一个整数

random.randrange(2, 8, 2)

从 range(start, stop, step) 返回一个随机元素

random.choice(seq)

从seq返回一个元素

random.choices(string.ascii_letters + '*&#%&@()', k=5)

从seq返回k个元素组成的列表

random.sample(string.ascii_letters, 5)

同上

2、Time

time.time()

当前时间戳

time.sleep(5)

time.localtime()

P_tuple本地时间

time.strftime('%Y-%m-%d %H:%M:%S', p_tuple)

P_tuple----》格式化时间

time.strptime('2011-10-12 8:10:33', '%Y-%m-%d %H:%M:%S')

时间----》P_tuple

time.mktime(p_tuple)

P_tuple-----》时间戳

time.gmtime(sec)

时间戳-----》P_tuple

 

3、Threading

import threading
def test1():
    for i in range(10):
        print(random.choice(string.ascii_lowercase))
def test2():
    for i in range(10):
        print(random.choice(string.digits))
t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()
t1.join()
t2.join()

4、Os

os.getcwd()

当前工作路径

os.path.join(path)

拼接路径

os.path.isfile(path)

判断path是否为文件

os.path.exists(path)

Path存在返回True

os.listdir(path)

返回Path路径下所有目录名和文件名,列表形式

os.rename('te1.py', 'te1temp.py')

重命名文件或目录

5、Re

match:从起始位置匹配,返回对象,失败返回None

search:全部字符串匹配第一个,返回对象,失败返回None

findall:全部字符串匹配所有,返回列表,失败返回空列表

res = re.search(r'(\d+)[a-z]+(\d+)', 'eer45t903ket')
print(res.group())
print(res.group(0))
print(res.group(1))
print(res.group(2))
print(res.groups())

45t903

45t903

45

903

('45', '903')

 

sub:替换

split:

Flag---re.I 忽略大小写

正则模式:

^-----开头, $-----末尾   .-----任意字符

[0-9]===\d

[^0-9] ===\D

\w------数字字母下划线

\s-------任意空白字符\n\t\r\f

[a-z]  [A-Z]  [a-zA-Z0-9]

a|b ---- a或b

*------0到无数次   +-----1到无数次   ?0或1个

 

6、Selenium

Driver放置路径:Python38-32\Scripts

chrom_options = webdriver.ChromeOptions()

chrom_options.add_argument(“start_maximized”)

brower = webdeiver.Chrom(options=chrom_options)

brower,get(“https:xxx”)

查找元素:id(唯一性)、xpath、name、link、class

获取文本(text),发送文本(send_keys(xxx))、点击元素(click())、清除(clear())、

鼠标悬停(move_to_element(ele))、是否enable(is_enabled())、是否被选中(is_selected())

 

三种等待方式:强制等待sleep(10)/隐式等待:无条件等待10s

1) 显式等待:有条件等待10s

Import WebDriverWait

Import expected_conditions as EC

WebDriverWait(driver, 10,0.5).until(EC.visibity_of_element_located(ele))

 

浏览器弹出框

alart = driver.switch_to_alart()

alart.text

alart.accpet()

alart.dismiss()

 

下拉框

Import Select

sel = Selest(ele)

sel.select_by_index(0)

Sel.select_by_value(‘zz’)

 

文件上传

<input type=”file”.....元素找到,send_keys(‘’)

 

 

 

 

 

 

18、两个列表取重复、除重复的元素

&----重复点

|----合并

^-----合并-重复点

t1 = [3, 5, 2, 1]
t2 = [8, 5, 3, 7, 6]
print(set(t1) - set(t2))
print(set(t2) - set(t1))
print(set(t1) ^ set(t2))
print(set(t1) & set(t2))
print(set(t1) | set(t2))

{1, 2}

{8, 6, 7}

{1, 2, 6, 7, 8}

{3, 5}

{1, 2, 3, 5, 6, 7, 8}

 

19、列表字符串首字母大写其他小写

l1 = ['erE08gT', 'erUUher', 'RhrJe']
print(list(map(lambda x: x[0].upper() + x[1:].lower(), l1)))
print(list(map(lambda x: str(x).capitalize(), l1)))

['Ere08gt', 'Eruuher', 'Rhrje']

 

20、租车骑绿道

部门组织绿道骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人,最大载重M。

给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述:

第一行两个数字m、n,自行车限重m,代表部门总人数n。

第二行,n个数字,代表每个人的体重。体重都小于等于自行车限重m。

0<m<=200

0<n<=1000000

输出描述:

最小需要的双人自行车数量。

示例1:

输入

3 4

3 2 2 1

输出

3

m, n = map(int, input().split())
wei = list(map(int, input().split()))
wei.sort()
cnt = 0
l = 0
r = n - 1
while l <= r:
    if wei[l] + wei[r] <= m:
        cnt += 1
        l += 1
        r -= 1
    else:
        cnt += 1
        r -= 1
print(cnt)

 

21、通信误码

信号传播过程中会出现一些误码,不同的数字表示不同的误码ID,取值范围为1~65535,用一个数组记录误码出现的情况。每个误码出现的次数代表误码频度,请找出记录中包含频度最高误码的最小子数组长度。

输入描述:

误码总数目:取值范围为0~255,取值为0表示没有误码的情况。

误码出现频率数组:误码ID范围为1~65535,数组长度为1~1000。

输出描述:

包含频率最高的误码最小子数组长度。

示例1:

输入:

5

1 2 2 4 1

输出:

2

说明:

频度最高的有1和2,他们的频度均为2.

可能的记录数组为[2,2]和 [1,2,2,4,1]

最短的长度为2

示例2:

输入

7

1 2 2 4 2 1 1

输出

4

说明

最短的为[2,2,4,2]

 

n = int(input())
ma = list(map(int, input().split()))
ma_dic = {}
for index, x in enumerate(ma):
    if x not in ma_dic:
        ma_dic[x] = [index]
    else:
        ma_dic[x] = ma_dic[x]+[index]
res = []
max_cnt = max(map(len, ma_dic.values()))
for k, v in ma_dic.items():
    if max_cnt == len(v):
        res.append(v[-1]-v[0]+1)
print(min(res))

22、最少数量线段覆盖

给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖住所有线段。

输入描述:

第一行输入为所有线段的数量,不超过10000,后面每行表示一条线段,格式为“x,y”,x和y分别表示起点和终点,取值范围是[-10^5,10^5]。

输出描述:

最少线段数量,为正整数。

示例1:

输入:

3

1,4

2,5

3,6

输出:

2

说明:

选取2条线段[1,4]和[3,6]即可,这两条线段可以覆盖[2,5]

n = int(input())
a = [list(map(int, input().split(','))) for x in range(n)]
a.sort(key=lambda x: (x[0], -x[1]))
cnt = 0
r = a[0][0] - 1
mx = r
p = 0
while p < n:
    if a[p][0] <= r:
        mx = max(a[p][1], mx)
        p += 1
    else:
        if mx > r:
            cnt += 1
            r = mx
        else:
            cnt += 1
            r = a[p][1]
            p += 1
if mx > r:
    cnt += 1
print(cnt)

标签:总结,__,10,python,返回,基础,误码,t1,print
From: https://www.cnblogs.com/zmm521/p/17490389.html

相关文章

  • 【python基础】函数-值传递
    为了更好的认识函数,我们还要研究值传递问题,再研究这个问题之前,我们已经知道了函数之间的值传递,是实参变量值传递给形参变量,然后让形参变量在函数内完成相应的功能。但是因为数据类型的不同,这里的值传递产生的对实参变量的效果是不同的1.传递数据本质参数传递之间传递的肯定是数......
  • 测试总结
    1、物理机虚拟机docker、k8s1) 虚拟机没有硬件实体,物理机有(如服务器、PC),虚拟机是用物理机虚拟出来的硬件系统;2) 物理机是一个,虚拟机是多个;3) 物理机执行引擎建立在cpu、os和硬件层面上,虚拟机自己实现。Docker&&虚拟机1) docker是搭建于os上,在os层面虚拟化,虚拟机是在硬......
  • 20230418 0. 面向对象基础
    面向对象的三大特性:封装、继承、多态面向对象的好处:可维护、可扩展、可复用、灵活性好封装每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。封装有很多好处:第一,良好的封装能够减少耦合第二,类内部的实现可以自由地修......
  • 【技术积累】自然语言处理中的基础知识【一】
    什么是自然语言处理(NLP)自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学和人工智能领域中的一个重要分支。它研究如何让计算机去理解、处理和生成自然语言,使计算机能够像人一样读、写、听和说自然语言。NLP主要涉及文本处理、语音识别、文本生成等技术。它主要通过利......
  • python: sql server
    sqlscript:/*学生类:姓名、年龄、学号、成绩班级类:班级名称、学生列表显示所有学生根据学号查找学生添加一个学生删除一个学生(学生对象、学号)根据学号升序排序根据成绩降序排序*/--学生表DROPTABLEStudentListGOcreatetableStudentList( StudentIdIN......
  • Python输出九九乘法表
    i=1;whilei<9:j=1;whilej<=i:print(f"{i}*{j}={i*j}\t",end='')j+=1;i+=1;print()......
  • redis基础笔记
    redis1、redis的基本使用学习网址http://redisdoc.com/说明:redis安装好后,有16个数据库,初始默认使用0号库,编号是0...151、添加key-val[set]2、查看当i去哪redis的所有key[keys*]获取key对应的值[getkey]切换redis数据库[seletionindex]如何查看当前数据库的key-va......
  • VBA结构总结
    三大结构:顺序、选择、循环选择If条件表达式Then真执行的,语句1ElseIf条件表达式假执行的,语句2Else上面情况都不满足执行则执行本,语句3EndIf 循环For循环For…Next循环ForEach循环For...Next循环//For…Next循环For[变量]......
  • Qt开发总结1
    GUI界面限制输入的内容QValidator*validator=newQIntValidator(100,999,this);//这样文本框只能输入100~999之间的数字ui->lineEdit->setValidator(validator);显示格式控制ui->textEdit->setWordWrapMode(QTextOption::WrapAnywhere);//任意地方换行ui->tableWi......
  • 知识总结
    jsp以reqBody传给后端后端用@RequestParam分别接收参数curl-XGET\http://bjfk-staging-ls508.yz02:9494/rest/infra/id/card/user/bind/account?uid=xxx&name=xxx&identity=xxx&appType=xxx后端使用@RequestParam分别承接几个参数即可@RequestParam只应用于content-type......