之前分享过一次我在学习Python的笔记,Python笔记【一】,最近有些新的收获,分享一下;

个人博客:https://blog.csdn.net/zyooooxie

random.sample() 随机不重复的数

工作中,有时候是需要在数据库手动去造些数据的,有些字段类似 order_id ,一般都是不重复的(在不考虑有退款等其他异常的情况下),若要造超多数量、不重复的order_id,该如何来做?

推荐使用random.sample();实际 在遇到生成随机整数的时候,我第一反应就是random.randint(),我们对比下:

循环random.randint(),实际会有重复的元素,而使用 range() + random.sample() 不会重复

请注意:这个用法 sample(range(10000000), 60) 是本身就给了一个没有重复元素的range
【若给了一个有重复元素的population,实际筛选出来的元素还是 会重复的】

a = [1, 1, 1, 1, 23, 213, 1322, 41, 111, 'zyoo1111ooxie', 'zyooooxie', 213, 1323, 213, 'zyooooxie', 'zyooooxie', 'zyooooxie', 1322, 41, 111, 'csdn', 'zyooooxie']
print(a)print(random.sample(a, 7))print({(ele, a.count(ele))for ele in a})

执行结果如下:

实际有set 后有10个,我就单单取7个,可结果是有3个相同的1;

rfind() 从右边开始查找 第一次出现的位置


说2个好笑的: 1. 上图我标注的 Return the highest index in S where substring sub is found。 看到 有地方介绍 rfind()是 会返回某字符串最后一次出现的位置,我的第一想法:从右边开始 最后一次,那不就是 从左边 首次出现吗?好像不对呀。 然后才明白:那儿的意思是 从左边最后一次,不正是我想的从右边 first嘛 【和注释也对得上】。 2. 既然有rfind() ,是不是也有lfind() ,为啥没有啊? = =

字符串find() != -1


find() 检测字符串中是否包含子字符串 sub,如果指定 start 和 end 范围,则在指定范围内 检查是否包含。不传start 和end,是从最开始-左侧开始find, 这不正是lfind() ?

这儿主要是想说下 :Return -1 on failure

因为 我往往不能确定子字符串的index,反而使用 str_xx.find('xxxx) != -1 会更多。

if file_str.find(‘文件名’)【错误用法】

"""
@blog: https://blog.csdn.net/zyooooxie
@qq: 153132336
@wechat: 153132336
"""file_path = '一直会被删除的不存在.png'if file_p.find('一直会被删除的') and os.path.exists(file_path):os.remove(file_p)

当file_path =‘abc.png’,实际file_p.find() 结果是-1,bool(-1) 是True

if file_p.find('一直会被删除的') == 0 and os.path.exists(file_path):os.remove(file_p)
if file_p.find('一直会被删除的') != -1 and os.path.exists(file_path):os.remove(file_p)

字符串开头、结尾 startswith() \endwith()

有时候确定 某字符串是否以某子字符串为开头、结尾,就要用到startswith()、 endswith();


这儿要说的是上面2图 鼠标所在那行 prefix can also be a tuple of strings to try 。suffix传参一个 全都为str的tuple,可以用来判断N个元素。

字符串 replace() 可控替换次数

先看下源码:

我是很喜欢用replace() 的,总结:
1.replace() 返回一个字符串的副本,其中出现的旧字符(old)被替换为新的(new),可选地将替换数count限制为最大值;
2.不传count,会把当前所有符合的old都替换为new ;
3.old的参数不存在,不报错,生成的新字符串和原 string 保持一致 ;
4.可以多次replace() ;
5.replace 不会改变原 string 的内容;
6.count 传超过 实际替换次数,也不会报错;

list.index() == -1 【错误用法】

标题是错误的(我在遇到第2次,才反应过来);
一直以来,访问列表的最后一个元素,我用的是list[-1],不知不觉就和list.index()用乱了。

list.index(obj):从列表中找出某个值第一个匹配项的索引位置
我之所以用list.index(obj) == -1, 是想当然认为 list的最后一个元素的索引是-1; 但实际索引是从0开始【大于等于0】;

    def test_20200221b(self):list_data = ['1', '2', '65', 'zy', 'zyooooxie', 'csdn']check_ele = 'xie1111'for d in list_data:print(list_data.index(d))if d.find(check_ele) != -1:print('找到')breakelse:if list_data.index(d) == -1:# if d == list_data[-1]:print('最后一个 没找到')

拿这个用例来做个说明,想看下list_data下面哪个元素可以find(check_ele),如果找到就结束for循环;如果最后那个元素也不符合,就 print没找到;

实际执行结果:

为什么没有 print‘没找到’? 实际就是 else里面 if判断出了问题【列表的索引 不会等于 -1】;

个人博客 https://blog.csdn.net/zyooooxie

Python笔记【二】相关推荐

  1. python again语句_【python笔记 二 】python语句

    1.for语句: 脚本实例: #!/usr/bin/python for i in range(1,15): print i else: print 'The loop is done !' 2.wh ...

  2. Python笔记(二十)_多态、组合

    多态 对于一个函数中的变量,我们只需要知道它这个变量是什么类,无需确切地知道它的子类型,就可以放心地调用类的方法,而具体调用的这个方法是作用在父类对象还是子类对象上,由运行时该对象的确切类型决定,这就 ...

  3. python笔记二:函数

    一.函数的参数 1.位置参数(按参数位置赋值) def student(name,age,school):print('姓名:',name,'\n'+'年龄:',age,'\n'+'学校:',scho ...

  4. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  5. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  6. 菜鸡自学 Python 笔记(二)

    菜鸡自学 Python 笔记(二) 五,结构与语句 1.选择结构-- if 语句 2.循环控制语句 (1)while 语句 (2)for 语句 (3)continue 语句与break 语句 六.列表 ...

  7. python rot13解密_codewars(python)练习笔记二十:ROT13解密

    codewars(python)练习笔记二十:ROT13解密 题目 How can you tell an extrovert from an introvert at NSA? Va gur ryr ...

  8. python学习笔记(二) 基本运算

    python学习笔记(二) 基本运算 1. 条件运算 基本语法 if condition1: do somethings1elif condition2: do somethings2else: do ...

  9. (Python入门)学习笔记二,Python学习路线图

    (Python入门)学习笔记二,Python学习路线图 千里之行始于足下,谋定而后动,冰冻三尺非一日之寒.之所以说这三句话,就是对于下面整理的路线图,即不让自己感觉路途的遥远而感到达到巅峰神界的遥遥无 ...

  10. Python案例笔记 | 用python制作二维码

    基于Python3版本的学习. 要用python制作二维码,需用python第三方库:MyQR . 安装myqr模块 首先需要在cmd中用pip安装myqr模块. win + r 打开运行命令,输入& ...

最新文章

  1. 二叉树高度的代码解析_剑指offer 从上到下打印二叉树
  2. Oracle结果集缓存(Result Cache)--服务器、客户端、函数缓存
  3. (字符串)字符串中首先出现两次的字符
  4. 如何在Linux上部署一个简单的Django项目
  5. 剑指offer38 数字在排序数组中出现的次数
  6. 特斯拉扭亏,股价暴涨;马斯克下一步:进军打车业务
  7. centos7添加用户并授权root权限
  8. 发几个iphone助手相关代码,供大家参考
  9. c语言常用函数大全超详细
  10. Google Play App Signing
  11. 全国计算机等级三级网络技术试卷详解(三)
  12. Hive Thrift Server
  13. 项目管理(如何进行项目质量管理)
  14. CPU RISC-V技术
  15. 运维服务流程设计文档
  16. 四级——星火英语作文模板
  17. 计算机ppt社团教案,计算机社团教案.doc
  18. 【Delphi入门】网络服务2(POP3协议 NMPOP3组件)
  19. Sexy Beach PR 汉化补丁+新手教程
  20. 839C - Journey

热门文章

  1. 802.1x认证方式(EAP中继认证与EAP终结认证)
  2. QSPI DSPI SPI超级详细的讲解,友好的讲解。
  3. 有“站德”的站长才能傲视群雄
  4. 正向代理与反向代理解析
  5. Redis哨兵集群搭建
  6. HackBar插件绕许可
  7. 模型视图简介、QListWidget、QTreeWidget、QTableWidget、QStringListModel、QFileSystemModel
  8. Airbnb 数据分析
  9. 用 Dev-C++ 编写简单的推箱子小游戏
  10. 数据库锁的详解, 共享锁, 更新锁, 排它锁, 意向锁, 加锁原理