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 16 Python
Python实现LRU算法的2种方法
Jun 24 Python
教你用Python创建微信聊天机器人
Mar 31 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Python集合操作方法详解
Feb 09 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
python代码能做成软件吗
Jul 24 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 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之第三天
2006/10/09 PHP
浅析php学习的路线图
2013/07/10 PHP
php数组编码转换示例详解
2014/03/11 PHP
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
详解VUE 数组更新
2017/12/16 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
Python中的pack和unpack的使用
2018/03/12 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
Python实现简单猜数字游戏
2021/02/03 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
社团招新策划书
2014/02/04 职场文书
社区活动总结报告
2014/05/05 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
建设工地安全标语
2014/06/07 职场文书
银行求职自荐书
2014/06/25 职场文书
三严三实心得体会范文
2014/10/13 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL