Python易忽视知识点小结


Posted in Python onMay 25, 2015

这里记录Python中容易被忽视的小问题

一、input(...)和raw_input(...)

#简单的差看帮助文档input(...)和raw_input(...)有如下区别 
>>> help(input) 
Help on built-in function input in module __builtin__: 
input(...) 
  input([prompt]) -> value 
  Equivalent to eval(raw_input(prompt)). 
>>> help(raw_input) 
Help on built-in function raw_input in module __builtin__: 
raw_input(...) 
  raw_input([prompt]) -> string 
    
  Read a string from standard input. The trailing newline is stripped. 
  If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError. 
  On Unix, GNU readline is used if enabled. The prompt string, if given, 
  is printed without a trailing newline before reading. 
  
#可见 input会根据输入的内容eval结果来返回值,即输入纯数字,则得到的就是纯数字 
#     raw_input返回的才是字符串 
#test: 
>>> a = input("输入数字") 
输入数字1 
>>> type(a) 
<type 'int'> 
>>> b=raw_input("输入数字") 
输入数字1 
>>> type(b) 
<type 'str'>

ps:在python3.0以后的版本中,raw_input和input合体了,取消raw_input,并用input代替,所以现在的版本input接收的是字符串

二、python三目运算符

虽然Python没有C++的三目运算符(?:),但也有类似的替代方案,

那就是
1、 true_part if condition else false_part

>>> 1 if True else 0 
1 
>>> 1 if False else 0 
0 
>>> "True" if True else "False" 
'True' 
>>> "True" if True else "False" 
'Falser'

2、 (condition and   [true_part]   or   [false_part] )[0]

>>> (True and ["True"] or ["False"])[0] 
'True' 
>>> (False and ["True"] or ["False"])[0] 
'False' 
>>>

三、获得指定字符串在整个字符串中出现第N次的索引

# -*- coding: cp936 -*- 
def findStr(string, subStr, findCnt): 
  listStr = a.split(subStr,findCnt) 
  if len(listStr) <= findCnt: 
    return -1 
  return len(string)-len(listStr[-1])-len(subStr) 
#test 
a = "12345(1)254354(1)3534(1)14" 
sub = "(1)" 
N = 2   #查找第2次出现的位置 
print findStr(a,sub,N) 
N = 10   #查找第10次出现的位置 
print findStr(a,sub,N) 
#结果 
#>>>  
#14 
#-1

四、enumerate用法:

遍历序列的时候,可能同时需要用到序列的索引和对应的值,这时候可以采用enumerate方法进行遍历

enumerate的说明如下:

>>> help(enumerate) 
Help on class enumerate in module __builtin__: 
 
class enumerate(object) 
 | enumerate(iterable[, start]) -> iterator for index, value of iterable 
 |  
 | Return an enumerate object. iterable must be another object that supports 
 | iteration. The enumerate object yields pairs containing a count (from 
 | start, which defaults to zero) and a value yielded by the iterable argument. 
 | enumerate is useful for obtaining an indexed list: 
 |   (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 
 |  
 | Methods defined here: 
 |  
 | __getattribute__(...) 
 |   x.__getattribute__('name') <==> x.name 
 |  
 | __iter__(...) 
 |   x.__iter__() <==> iter(x) 
 |  
 | next(...) 
 |   x.next() -> the next value, or raise StopIteration 
 |  
 | ----------------------------------------------------------------------
 | Data and other attributes defined here: 
 |  
 | __new__ = <built-in method __new__ of type object> 
 |   T.__new__(S, ...) -> a new object with type S, a subtype of T

五、遍历序列的方法

>>> List = ['a','b','c'] 
>>> for index, value in enumerate(List): 
  print index, value 
0 a 
1 b 
2 c 
>>>

六、使用python random模块的sample函数从列表中随机选择一组元素

import 
List = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
slice = random.sample(List, 5)
#从List中随机获取5个元素,作为一个片断返回  
print slice  
print List #原有序列并没有改变。

七、用json打印包含中文的列表字典等

# -*- coding:utf-8 -*- 
import json 
#你的列表 
listA = [{'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 1080p x264 AAC][6E5CFE86].mp4'], 'length': 131248608L}, {'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 720p x264 AAC][639D304A].mp4'], 'length': 103166306L}, {'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 480p x264 AAC][5A81BACA].mp4'], 'length': 75198408L}]
#打印列表
print json.dumps(listA, encoding='UTF-8', ensure_ascii=False)

输出结果:

>>>  
[{"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 1080p x264 AAC][6E5CFE86].mp4"], "length": 131248608}, {"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 720p x264 AAC][639D304A].mp4"], "length": 103166306}, {"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 480p x264 AAC][5A81BACA].mp4"], "length": 75198408}]

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
简明 Python 基础学习教程
Feb 08 Python
python中global与nonlocal比较
Nov 21 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
python实现超级玛丽游戏
Mar 18 Python
Python流程控制语句的深入讲解
Jun 15 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
Python PIL按比例裁剪图片
May 11 Python
Python中类型关系和继承关系实例详解
May 25 #Python
pymssql数据库操作MSSQL2005实例分析
May 25 #Python
python动态参数用法实例分析
May 25 #Python
Python文件去除注释的方法
May 25 #Python
python提取页面内url列表的方法
May 25 #Python
python实现批量改文件名称的方法
May 25 #Python
python基于右递归解决八皇后问题的方法
May 25 #Python
You might like
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Javascript 布尔型分析
2008/12/22 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
复习Python中的字符串知识点
2015/04/14 Python
python简单猜数游戏实例
2015/07/09 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
Python3读写ini配置文件的示例
2020/11/06 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
2014年教师节讲话稿5篇
2014/09/10 职场文书
小学生交通安全寄语
2015/02/27 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android