Python学习笔记

1.Python中的[1:]、[::-1]

  • [1:]

    去掉列表中第一个元素(下标为0),去后面的元素进行操作
  • [::-1]

    从最后一个元素到第一个元素复制一遍,即“反转”

2.运算符“//”

  • 取整除 - 返回商的整数部分(向下取整)
  • 例如:9//2 =>4, -9//2=>-5

3.list(map(int,input().split()))

  • input().split()
    • input()接收多个用户输入需要与split()结合使用
    • 例如:
host, port, username, passwd, dbname = input("请输入服务器地址,端口号,用户名,密码及数据库名,空格隔开:").split()   
# 注意input()的返回类型是str
print(host,port,username,passwd,dbname)
#结果:
请输入服务器地址,端口号,用户名,密码及数据库名,空格隔开:10.1.1.71 22 root 123456 db_name
10.1.1.71 22 root 123456 db_name
  • list(map(int,input().split()))
    • 创建一个列表,使用 split() 函数进行分割
    • map() 函数根据提供的函数对指定序列做映射,就是转化为int型
  • map用法
 list(map(square, [1,2,3,4,5]))   #使用 list() 转换为列表[1, 4, 9, 16, 25]
  • 在同一行连续输入整数(用空格隔开)->map(int,input().split())
a,b,n=map(int,input().split())
print(a,b,n)
#输入
>>>3 5 10
#输出
>>>3 5 10
  • map(int,str(i))
    • 假设i=字符串’ABCD’,那么list(map(int,str(i))为[‘A’,‘B’,‘C’,‘D’]

4.& 按位与运算符

  • 运算规则

    按位与运算符&的运算规则是:只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0,
  • 按位与运算符解释
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNycL3bV-1681268155198)(位运算符.png)]
  • 应用

    判断奇偶数->蓝桥杯 ->数字三角形
import os
import sys
N=int(input())#三角形的行数
h=[list(map(int,input().split())) for i in range(N)]
#print(h)
for i in range(1,N):
   for j in range(i+1):
       if j==0:#最左边元素由右上角获得
           h[i][j]=h[i][j]+h[i-1][j]
       elif i==j:#最右边元素由左上角获得
           h[i][j]=h[i][j]+h[i-1][j-1]
       else :#其它元素由上一行的最大值获得
           h[i][j]+=max(h[i-1][j-1],h[i-1][j])
if N&1:#结果在最后一行的中位数,此行为判断是否为奇数,若N&1==1,即为奇数
   print(h[-1][N//2])
else:
   print(max(h[-1][N//2-1],h[-1][N//2])) 

5.冒泡排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0k32340-1681268155199)(冒泡排序.png)]

import os
import sys

# 请在此输入您的代码
'''
全逆乱序的冒泡排序次数为N*(N-1)/2
15*14/2=105
14*13/2=91
100次交换至少需要15个字母
onmlkjihgfedcba
105-100=5,只需把第6个字母往后移到第1位即可
'''
print("jonmlkihgfedcba")

6.date.isoweekday()

它使用日期类对象并以整数形式返回星期几,其中星期一是 1,星期日是 7。它与 date.weekday() 函数相同,我们认为星期一是 0,在接下来的几天里递增 1。

  • 导入模块
import datetime

from datetime import date
  • 用法
isoweekday()
  • 参数

    无参数

7.创建二维数组

  • [ 0 ] * n 是浅拷贝, 也就是把一个列表重复了 n 次,是 = 号复制(注意不是浅拷贝,= 与浅拷贝的list id是不同的);
  • [[0]*n]*m 这种方式是直接将 [0]*n 复制了m遍
  • [0 for _ in range(n)] 才是创建,深拷贝
  • 二维数组的创建方法
m,n = 3,4
dp1 = [[0] * n ] * m
dp2 = [[0 for _ in range(n) ] for _ in range(m)]
dp3 = [[0] * n for _ in range(m)]
dp1[0][2] = 3
dp2[0][2] = 3
dp3[0][2] = 3
print('dp1:',dp1)
print('dp2:',dp2)
print('dp2:',dp3)
结果:
dp1: [[0, 0, 3, 0], [0, 0, 3, 0], [0, 0, 3, 0]]
dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
#第一种方法不行,每一行的改变都会改变其他行
#第二种、第三种方法均可

8、a, b = b, a + b的含义

  • 先计算“=”右边的 a+b
  • a=b
  • b=a+b
  • 图解交换赋值
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WFNbRdQ-1681268155199)(交换赋值.png)]

9、 key=lambda 元素: 元素[字段索引]用法

  • x:x[]字母可以随意修改,排序方式按照中括号[]里面的维度进行排序,[0]按照第一维排序,[2]按照第三维排序
  • lambda 函数需要:1.接收1个参数;2.返回一个值,且返回值是可比较大小的。
  • l.sort(key=lambda x:x[1]),与sort连用,表示sort按x[1]维度排序

10、x,y=y,x//2 计算顺序

  • 先计算x//2
  • x=y
  • y=x//2

11、sort与sorted的区别

  • sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
  • list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  • sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)

12、全排列组合——itertools.combinations(字符串,长度)

  • itertools库combinations和permutations
    • combinations和permutations返回的是对象地址,原因是在python3里面,返回值已经不再是list,而是iterators(迭代器), 所以想要使用,只用将iterator 转换成list 即可。
  • combinations(p, r)
    • 该方法重点在组合
    • p是一个list参数
    • r是数字,r长度的tuple,按顺序排列,没有重复元素
  • permutaitions(p,r)
    • 该方法重在排列
    • p是一个list参数
    • r是数字,r长度的tuple,所有可能的顺序,没有重复的元素
import itertools
list_1=[1,2,3,4]
list_2=list(itertools.combinations(list_1,3))
list_3=list(itertools.permutations(list_1,3))
list_4=itertools.combinations(list_1,3)
list_5=itertools.permutations(list_1,3)
print(list_2)
print(list_4)
print(list_3)
print(list_5)

#结果
"""
D:\Anaconda\Anaconda\python.exe D:\PychramPrograms\LanQiaoBei\测试.py 
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
<itertools.combinations object at 0x000001657E605720>
[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]
<itertools.permutations object at 0x000001657E787A40>
"""

13、利用int进行进制转换

  • 描述
    • int() 函数用于将一个字符串或数字转换为整型。
  • 语法
    • class int(x, base=10)
  • 参数
    • x – 字符串或数字。
    • base – 进制数,默认十进制。
    • 若 x 为 str,则 base 可略可有。
    • base 存在时,视 x 为 base 类型数字,并将其转换为 10 进制数字。
    • 若 x 不符合 base 规则,则报错。
  • 例如:将九进制的(2022)转化为十进制
    • print(int('2022',9))
    • 注意:2022必须为字符串

14、string.count(sub_string, start, end)统计字符串中某字符出现的次数

  • 参数含义
    • string
      • 待统计的字符串
    • sub_string
      • 希望检测的字符串,即希望检测出sub_string在string中出现的次数。
      • 不可省略的字符串参数
    • start
      • string字符串开始搜索的位置
      • 可省略
    • end
      • string字符串结束搜索的位置
      • 可省略
  • 例如

只有一个参数

"MacBook Pro".count("o") 
#结果:3

指定起始位置

>>> "MacBook Pro".count("o")
3

指定起始和末尾位置

>>> "MacBook Pro".count("o", 6, 9)
0
#注意:末尾位置不包含9,包含9-1=8
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值