保研考研机试攻略:python笔记(2)

????????????宝子们好呀,今天我们继续来学习N诺提供的python笔记,fighting!( •̀ ω •́ )✧

对这个系列感兴趣的宝子欢迎关注保研考研机试攻略专栏哦 ~

目录

????????????4进制转换

????x进制转十进制

????十进制转x进制

????????????5python逆序

????逆序通常方法

????reverse用法

????????????6负进制转换方法

????????????7初始化长度为N的字符串

????????????8datatime类使用

????创建日期对象

????strftime()方法

???? 时间差——datetime.timedelta类

???? 字符串与datatime类型互转 

????1.datetime对象转换成字符串

????2.字符串转换成datetime对象

????????????9字符串只读不写

????????????10字典类

????字典排序

????根据字典的key排序

????根据字典的value值排序

????元组创建字典

????setdefault使用

????字典删除元素

????set使用

????判断set值是否存在

????set 集合中添加元素

????set集合中删除元素

????set集合做交集、并集、差集运算


????????????4进制转换

????x进制转十进制

a = input()#字符串 
print(int(a,x))

????十进制转x进制

将十进制decimal system转换成二进制binary system

print(bin(10))
'{0:b}'.format(10)

将十进制decimal system转换成八进制Octal

print(oct(10))
'{:o}'.format(10)

将十进制decimal system转换成十六进制Hexadecimal

print(hex(10))
'{:x}'.format(10)

????????????5python逆序

????逆序通常方法

x[::-1]#x可为string or list

????reverse用法

# reverse 只对list作用,对string无效
x = ['1','2','3'] 
x.reverse()
x #输出['3','2','1']

#reversed返回list逆序的迭代器
[a for a in reversed(x)]#输出['1','2','3'],x为list

????????????6负进制转换方法

方法与二进制一致

def baseNeg2(N): 
    res = ''
    while N:
        # N, k = -(N // 2), N % 2
        N, k = -(N >> 1), N % 2 #此处相比正进制多了负号,因为存在奇偶正负问题 
        res = str(k) + res
    return res if res else '0'

????????????7初始化长度为N的字符串

print(3*"1")
#"333"

????????????8datatime类使用

????创建日期对象

如需创建日期,我们可以使用 datetime 模块的 datetime() 类(构造函数)。 datetime() 类需要三个参数来创建日期:年、月、日。

datatime对象间可以相加减,比较大小。

但对于时间信号,利用字符串比大小机制也能得出结果:

'2007-02-17 19:22:53,315'>'2007-01-27 19:22:53,315'# True
datetime.datetime(2007, 2, 17, 19, 22, 53, 315000)>datetime.datetime(2007, 1, 27, 19, 22, 53, 315000)# True

实例:创建日期对象

import datetime
x = datetime.datetime(2020, 5, 17) 
print(x)#2020-05-17 00:00:00

????strftime()方法

datetime 对象拥有把日期对象格式化为可读字符串的方法。

该方法称为 strftime() ,并使用一个 format 参数来指定返回字符串的格式:

实例:显示月份的名称

import datetime

x = datetime.datetime(2019, 10, 1)

print(x.strftime("%B"))#October
from datetime import datetime

date_string = "1 October, 2020"
print("date_string =", date_string)

date_object = datetime.strptime(date_string, "%d %B, %Y") 
print("date_object =", date_object)

???? 时间差——datetime.timedelta类

from datetime import datetime, date

t1 = date(year = 2018, month = 7, day = 12)  
t2 = date(year = 2017, month = 12, day = 23) 
t3 = t1 - t2
print("t3 =", t3)# t3 = 201 days, 0:00:00 
print(t3.days) # 201

t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13)
t6 = t4 - t5
print("t6 =", t6)# t6 = -333 days, 1:14:20

print("type of t3 =", type(t3)) # type of t3 = <class 'datetime.timedelta'> 
print("type of t6 =", type(t6)) # type of t6 = <class 'datetime.timedelta'>

data_a = datetime.datetime(2022,1,1)
data_b = data_a+datetime.timedelta(days=61)# timedelta可用于datatime的计算
print("{:d}-{:02d}-{:02d}".format(data_b.year,data_b.month,data_b.day))# 2022- 03-02

???? 字符串与datatime类型互转 

????1.datetime对象转换成字符串

利用str或者strftime方法可以将datetime对象转换成字符串

from datetime import datetime # 导入datetime模块
stamp = datetime(2017, 10, 7) # 生成一个datetime对象 
str(stamp) # 转换  #结果显示: '2017-10-07 00:00:00'

????2.字符串转换成datetime对象

datetime.strptime可以用这些格式化编码将字符串转换成日期

from datetime import datetime 
value = '2017/10/7'
datetime.strptime(value, '%Y/%m/%d')
#datetime.datetime(2017, 10, 7, 0, 0)

????????????9字符串只读不写

Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符。

直接修改会报错: 'str'object does not support item assignment

#报错
#s = '312141' 
#s[0] = '0'

#正确方法
s = '312141'
t = list(s)
t[0] = '0'
s = ''.join(t)

????????????10字典类

????字典排序

????根据字典的key排序

#  单独打印出排序后的key值
new_sys = sorted(sys) 
print(new_sys)

new_sys = sorted(sys.keys()) 
print(new_sys)

#对于set可直接sorted就行
a ={'3', '2', '2', '1', '5'}
print(a)#{'2', '1', '5', '3'}
sorted(a)# ['1', '2', '3', '5']

# 根据key的升序排列,把key value都打印出来
new_sys1 = sorted(sys.items(), key=lambda d: d[0], reverse=False) 
print(new_sys1)

#python sorted自带稳定排序
new_sys1 = sorted(sys.items(), reverse=False) 
print(new_sys1)

'''
['age', 'gender', 'name'] 
['age', 'gender', 'name']
[('age', '十八 '), ('gender', 'man'), ('name', '张三 ')] 
[('age', '十八 '), ('gender', 'man'), ('name', '张三 ')]
'''

????根据字典的value值排序

# 单独打印出排序后的value值
new_sys1 = sorted(sys.values()) 
print(new_sys1)

# 打印出根据value排序后的键值对的具体值
new_sys2 = sorted(sys.items(),  key=lambda d: d[1], reverse=False)
print(new_sys2)
'''
['man', '十八 ', '张三 ']
[('gender', 'man'), ('age', '十八 '), ('name', '张三 ')]
'''

????元组创建字典

dict.fromkeys

#!/usr/bin/python
# -*- coding: UTF-8 -*-

seq = ('Google', 'Runoob', 'Taobao')

# 不指定默认的键值,默认为 None
thisdict = dict.fromkeys(seq)
print ("新字典为 : %s" %  str(thisdict))

# 指定默认的键值
thisdict = dict.fromkeys(seq, 10)
print ("新字典为 : %s" %  str(thisdict)

????setdefault使用

用法:给定一组(key val)和一个字典dict dict.setdefault(key,val)dict内含有key,则返回对于 key的值,否则加入新的(key val

word = 'abc'
for i in word:
    tree = tree.setdefault(i, {})
# tree 值一直为{}

????字典删除元素

pop() 删除字典给定键key所对应的值, 返回被删除的值

dict = {'name': 'jesse', 'age': 18, 'sex': 'male'} 
name = dict.pop('name')  #
print(name)  # 

????set使用

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

????判断set值是否存在

a={1,2,3}
print(4 in a)#False

????set 集合中添加元素

使用 set 类型提供的 add() 方法实现

使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误。例如:

a = {1,2,3}  
a.add((1,2)) 
print(a)
a.add([1,2]) 
print(a)

运行结果:

{(1, 2), 1, 2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
a.add([1,2])
TypeError: unhashable type: 'list'

????set集合中删除元素

使用 remove() 方法 discard() 方法

需要注意的是,使用remove() 如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误, 例如:

a = {1,2,3} 
a.remove(1) 
print(a)
a.remove(1) 
print(a)
#a.discard(1) 此方法不会抛出异常 
#print(a)

运行结果:

{2, 3}
Traceback (most recent call last):
 File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
  a.remove(1) 
KeyError: 1

????set集合做交集、并集、差集运算

集合最常做的操作就是进行交集、并集、差集以及对称差集运算。

上图有 2 个集合,分别为 set1={1,2,3} set2={3,4,5},它们既有相同的元素,也有不同的元素。以这 两个集合为例,分别做不同运算的结果如表所示。

运算操

Python 算符

含义

例子

交集

&

取两集合公共的元素

>>> set1 & set2 {3}

并集

|

取两集合全部的元素

>>> set1 | set2 {1,2,3,4,5}

差集

-

取一个集合中另一集合没有的 元素

>>> set1 - set2 {1,2} >>> set2 - set1 {4,5}

对称差

^

取集合 A B 中不属于 A&B 的元素

>>> set1 ^ set2 {1,2,4,5}

好啦,今天我们先学到这里,学完的同学们都太棒了,我们下一篇见 ~ ????????????

有什么问题我们随时评论区见哦 ~ ????????????
 

上一篇:Qt 实战(10)模型视图 | 10.6、自定义 QTableView


下一篇:中断