1.列表去重后,将列表中的元素相加
PLUS: try…except的妙用
nums = [1, 2, '34', 'ab', 4, 1, 2]
after_nums = []
mysum = 0
for i in nums:
try:
temp = int(i)
if temp not in after_nums:
after_nums.append(temp)
mysum += temp
except:
continue
2./b的使用
3.直接将dict类型数据写入json文件中报错如下
TypeError: write() argument must be str, not dict
4.format 和解包unpacking的妙用
logical_link=""" <LOGICAL-LINK xsi:type="GATEWAY-LOGICAL-LINK" ID="MIIT.MIIT_Project.{}_UDS_ON_CAN.LOGICAL-LINK">
<SHORT-NAME>{}_UDS_ON_CAN</SHORT-NAME>
<LONG-NAME>{} UDS ON CAN</LONG-NAME>
<PHYSICAL-VEHICLE-LINK-REF ID-REF="BYTON_MIIT.MIIT_Project.PVL_PCAN614.PHYSICAL-VEHICLE-LINK"/>
<PROTOCOL-REF ID-REF="PR_UDSOnCAN" DOCREF="PR_UDSOnCAN" DOCTYPE="LAYER"/>
<BASE-VARIANT-REF ID-REF="BV_{}" DOCREF="BV_{}" DOCTYPE="LAYER"/>
<PROT-STACK-SNREF SHORT-NAME="ISO_15765_3_on_ISO_15765_2_on_ISO_11898_2_DWCAN"/>
</LOGICAL-LINK>""" # 有五个方括号
for i in ['ACM']:
res=logical_link.format(*[i for j in range(5)])
print(res)
5.Yield 语句
返回一个生成器对象
当函数执行至yield语句时,将yield之后的
表达式结果
进行返回
函数暂停,直至下次使用next调用该对象 才继续从yield 的断点处继续运行
重复步骤1,直至异常
6.strip() 不仅仅可以连续去除首尾单个字符,还会以或关系连续去除某些字符
连续:删除首尾的某字符后,如果发现首尾还有指定的字符仍然会继续去除
tim='abfdjkk'
tim.strip('ak') #连续去除首尾的a or k 字符
'bfdj'
tim.strip('ak').strip('bj')
'fd'
tim.strip('ab')
'fdjkk'
7.any() &all()
any(x)判断x对象是否为空对象,如果都为空、0、false
,则返回false,如果不都为空、0、则返回true
同理可得all()
any('False')
True
any([bool(False)]) # any(False)报错,bool object isn't iterable,so 才在外头包了一层列表[]
False
>>> any((0,False,'')) # 因为遍历到False是,求Bool(False)为False
False
>>> all('')
True
8.如何展示下载进度
1.以下载图片为例
2.核心方法是 urllib.urlrequest 模块的 urlretrieve()方法
urlretrieve(url, filename=None, reporthook=None, data=None)
url: 文件url
filename: 保存到本地时,使用的文件(路径)名称
reporthook: 文件传输时的回调函数
data: post提交到服务器的数据
该方法返回一个二元元组("本地文件路径",<http.client.HTTPMessage对象>)
3.
def loading(blocknum, blocksize, totalsize):-----》回调函数可以查看当前下载的相关进度参数
"""
回调函数: 数据传输时自动调用
blocknum:已经传输的数据块数目
blocksize:每个数据块字节
totalsize:总字节
"""
4.仍然无法实现如下图所示的下载进度展示
9.对不带0x的十六进制数 排序
10.如何比较两个相同元素,不同顺序的列表是否相同
利用set() 分别对两个元素进行排序去重
然后直接利用== 比较即可