python基础笔记(持续补充ing)

一、输入列表

首先要明白input()获得的是字符串

第一种:自动构造tuple或list

计算第一个时间与第二个时间的差
输入样例:
6 30 23 20
输出样例:
16:50

h1, m1, h2, m2 = (float(num) for num in input().split()) #()返回tuple,[]返回list
m = m2 - m1
if m < 0:
    m += 60
    h2 -= 1
print('%d:%d' % (h2 - h1, m))
第二种:对字符串切割

对字符串切割(split()默认空格)返回元组

a,b,c = input().split() #split(',')对','切割
第三种:eval

eval()的参数是:字符串表达式,eg.2+3(返回5)、1, 2, 3(返回元组)

x,y,z = eval(input())

二、数学运算

幂运算:a**(x/y)表示ax/y次方
由此拓展:a的3次方a**3,a的5次方根a**(1/5)

三、字符串

1、字符串切片

字符串切片公式:str = [start: end:step]
step 默认步长为1(str = [start: end])
end 默认取到最后 (str = [start: ])
start 默认从头开始(str = [:end ])
start和end同时省略 copy(str = [:] 或 str = [::])
当step为负数时(从右向左切),eg.'Zhejiang University'[:-9:-2] 结果为yirv

2、字符串切割split

1、设置单个切割符split()默认以空白符为切割符,split(',')则以逗号为切割符。
2、设置多个切割符,例如分别设置.!?三个为切割符。

import re
s = input()
ls = re.split("[.!?]+",s)
print(ls)
#输入:you are a sight sore eyes! you look well.
#输出:['you are a sight sore eyes', ' you look well', '']
3、字符串替换
s = '12;23;'
print(s.replace(';',','))

四、排序

Python 列表有一个内置的 list.sort() 方法可以直接修改列表。还有一个 sorted() 内置函数,它会从一个可迭代对象构建一个新的排序列表,该函数可支持字典排序。

sorted(__iterable, key=None, reverse=False)

根据 iterable 中的项返回一个新的已排序列表。

具有两个可选参数,它们都必须指定为关键字参数:

  1. key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为None (直接比较元素)。
  2. reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。

使用 functools.cmp_to_key() 可将老式的 cmp 函数转换为 key 函数。

1、list排序普通用法

按照第一个元素排序,默认是小到大,反转成大到小

lst = [(9, 4), (2, 10), (4, 3), (3, 6)]
lst.sort(key=lambda item: item[0],reverse=False)
print(lst)

优先第二个,然后再第一个

lst = [(9, 4), (2, 10), (4, 3), (3, 6)]
lst.sort(key=lambda item:(item[1],item[0]))
print(lst)
2、字典排序普通用法

优先第二个,然后再第一个

d = {'a':'asd','fsd':'123','12f':'123'}
ls = sorted(d.items(),key=lambda x:(x[1],x[0]))
3、高级用法

自定义函数cmp,在python3中sorted没有cmp参数,需要functools.cmp_to_key()修饰自定义cmp函数。其中相等返回0,否则返回1或-1

from functools import cmp_to_key
def cmp(a,b):
    # 按照第二个值大到小排序
    return 1 if a[1] < b[1] else -1 if a[1] < b[1] else 0

d = {'a':'asd','fsd':'123','12f':'123'}
ls = sorted(d.items(),key=cmp_to_key(cmp))

五、深浅拷贝

深拷贝和浅拷贝都是对Python中对象的复制,占用不同的内存空间。深拷贝会完全拷贝父对象及父对象内部的子对象,而浅拷贝会拷贝父对象,但不会拷贝父对象内部的子对象。

1、字典拷贝

浅拷贝

dic = {"C":1,"Java":2,"Python":4,"CJavaPy":5}
d1 = dict(dic)#浅拷贝
print(d1)
d2 = dic.copy() #浅拷贝
print(d2)

深拷贝

from copy import deepcopy
dic = {"C":1,"Java":2,"Python":4,"CJavaPy":5}
d1 = deepcopy(dic) #深拷贝
print(d1) 

六、基础配置

跨项目自定义模块找不到时,需要配置模块路径(环境变量)
参考:https://docs.python.org/2/tutorial/modules.html#the-module-search-path
当导入一个名为的模块时spam,解释器首先搜索具有该名称的内置模块。如果未找到,它将搜索spam.py变量 给定的目录列表中 指定的文件sys.path。 sys.path从这些位置初始化:

  • 包含输入脚本的目录(或当前目录)。
  • PYTHONPATH(目录名称列表,与 shell 变量的语法相同PATH)。
  • 依赖于安装的默认值。

初始化后,Python 程序可以修改sys.path. 包含正在运行的脚本的目录放置在搜索路径的开头,标准库路径之前。这意味着将加载该目录中的脚本而不是库目录中的同名模块。除非有意更换,否则这是一个错误。有关详细信息,请参阅标准模块部分 。
pycharm做法:https://blog.csdn.net/csdnhuizhu/article/details/104525634

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值