【转】python的小知识
1. 如何反序访问一个序列(how do I iterate over a sequence in reverse order)
如果序列是list,则使用list.reverse()即可将序列反序。若不是list,则可以:
- for i in range(len(sequence)-1, -1, -1):
- x = sequence[i]
- <do something with x>
2. python中的类型转化
Python中的类型转化较为容易。只需将等转化的对象使为参数传入目标类型即可。如:
- x = int('1')
- y = float(1)
- z = tuple([1, 2, 3])
- p = list((1, 2, 3))
3. python中如何查找和替换字符串
python中可用标准库re,结合正则表达式来查找字符串。使用sub(replacement, string, [n])来替换字符串。subn与sub功能类似。
- import re
- p = re.compile('blue|red|yellow')
- print p.sub('color', 'blue is not red')
- print p.sub('color', 'blue is not red', 1)
- print p.subn('color', 'blue is not red')
- 结果:
- 'color is not color'
- 'color is not red'
- ('color is not color', 2)
4. python如何拷贝对象
python中的可变对象赋值时是按引用传递的。如果需要拷贝对象,有三种方法:1)完全切片操作[:] 2) 利用工厂函数,如list(), dict()等;3)使用标准库中的copy模块。序列类型的拷贝默认为浅拷贝。
- copy.copy 浅拷贝只拷贝父对象,不会拷贝对象的内部的子对象。也就是说,如果了对象为可变对象,则仅是引用此可变对象
- copy.deepcopy 深拷贝拷贝对象及其子对象
以下有几点关于拷贝操作的警告。第一,非容器类型(比如数字、字符串和其他“原子”类型的对象,像代码、类型和xrange对象等)没有被拷贝一说,浅拷贝是用完全切片操作来完成的。第二,如果元组变量只包含原子类型对象,对它的深拷贝将不会进行。如果我们把账户信息改成元组类型,那么即便按我们的要求使用深拷贝操作也只能得到一个浅拷贝。
例子:
- import copy
- a = [1, 2, 3, 4, ['a', 'b']] #原始对象
- b = a #赋值,传对象的引用
- c = copy.copy(a) #对象拷贝,浅拷贝
- d = copy.deepcopy(a) #对象拷贝,深拷贝
- e = a[:] #对象拷贝,同浅拷贝
- f = list(a) #对象拷贝,浅拷贝
- a.append(5) #修改对象a
- a[4].append('c') #修改对象a中的['a', 'b']数组对象
- print 'a = ', a
- print 'b = ', b
- print 'c = ', c
- print 'd = ', d
- print 'e = ', e
- print 'f = ', f
输出结果为:
- a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
- b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
- c = [1, 2, 3, 4, ['a', 'b', 'c']]
- d = [1, 2, 3, 4, ['a', 'b']]
- e = [1, 2, 3, 4, ['a', 'b', 'c']]
- f = [1, 2, 3, 4, ['a', 'b', 'c']]
5. if __name__ == '__main__'的作用
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,它有什么用呢?模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。
6. python如何判断一个文件是否存在?如果获取脚本传进来的参数?
os.path.exist()可用来判断文件是否存在
sys.argv[i]用来取脚本传进来的参数
7. 产生一个0至5(包括)的数组
arr = [x for x in range(0, 6)]
8. 将字符"www.baidu.com"输出为"com#baidu#www"
- def fun(str, f1, f2):
- arr = str.split(f1)
- return f2.join(arr[::-1])
9. lambda函数的作用
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
10. yield函数的作用
yield 简单说来就是一个生成器,生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。详见:http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
11. python中search和match的区别
search可从字符串的任何位置开始进行匹配,而match仅能从字符串的第0位置开始匹配。例如:
>>> re.match('hello', 'hello world').span()
(0, 5)
>>> re.match('world', 'hello world').span()
AttributeError: 'NoneType' object has no attribute 'span' 这说明re.match没有找到字符串
>>> re.search('world', 'hello world').span()
(6, 11)
【转】python的小知识的更多相关文章
- 简述Python入门小知识
如今的Python开发工程师很受企业和朋友们的青睐,现在学习Python开发的小伙伴也很多,本篇文章就和大家探讨一下Python入门小知识都有哪些. 扣丁学堂简述Python入门小知识Python培训 ...
- 【python学习小知识】求绝对值和numpy和tensor的相互转换
一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...
- python字典小知识
字典的小知识dic = {"name": "tom", "age": 23, "price": 110}# 01:提取键 ...
- python基础小知识,is和==的区别,编码和解码
1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...
- [Python][小知识][NO.2] Python 字符串跨行连接,或拆分为多行显示
1.前言 又是一个字符串很长,但又是一种格式的小字符串直接连接而成的大字符串. 这么我们拆成多行,即美感,又易于我们修改. 例如 文件选择框中的 通配符: wildcard = "Pytho ...
- python小技巧 小知识
python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...
- python之数字类型小知识
数字是表示计数的抽象事物,也是数学运算和推理的基础,所以,生活中数字是生活中无处不在的,那么,在python语言中运用数字有哪些小知识呢,不妨花点时间看一下这篇博文,牢记这些小知识. 整数类型中四种进 ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...
随机推荐
- 04day1
无穷的数列 找规律 [问题描述] 有一个无穷序列如下: 110100100010000100000- 请你找出这个无穷序列中指定位置上的数字. [输入] 第一行一个正整数 N,表示询问次数:接下来的 ...
- 【JSP】弹出带输入框可 确认密码 对话框
<body> <input type="submit" value="删除历史全部订单" onclick="deleteall()& ...
- 【Unity3D】自动寻路(Nav Mesh Agent组件)
1.首先添加场景模型 2.为场景模型(寻路路径)添加NavMesh渲染,操作:Windows->Navigation->勾选Navigation Static选项->不勾选Gener ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- .NET之美——.Net 项目代码风格要求
.Net 项目代码风格要求 PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# ...
- HDU 5489 Removed Interval
题意:求一段序列中删掉L个连续元素后的LIS. 解法:我的想法很复杂= =怎么说呢……首先用nlogn的方法求LIS得到的序列dp的第i项的意义为上升子序列所有长度为i的序列结尾元素的最小值,那么先倒 ...
- alibaba笔试
1.D A(7,7)/(A(3,3)A(2,2)) = 420 关联: 字符串的排列和组合:http://blog.csdn.net/hackbuteer1/article/details/7462 ...
- Lighting System Design
题意:从小到大给出额定功率,给出该功率费用,和灯泡的数量和单价,现在灯泡能在比他额定功率大的功率运行,求让所有灯泡正常工作的最小费用 分析: 问题转化为求用哪几个功率运行灯泡最小费用,dp[i]前i个 ...
- codeforces 678D Iterated Linear Function 矩阵快速幂
矩阵快速幂的题要多做 由题可得 g[n]=A*g[n-1]+B 所以构造矩阵 { g[n] } = {A B} * { g[n-1]} { 1 } {0 1 ...
- POJ 3621 Sightseeing Cows 01分数规划,最优比例环的问题
http://www.cnblogs.com/wally/p/3228171.html 题解请戳上面 然后对于01规划的总结 1:对于一个表,求最优比例 这种就是每个点位有benefit和cost,这 ...