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练习程序批量修改文件名
Jan 16 Python
利用Python实现Windows定时关机功能
Mar 21 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python实现图片拼接的代码
Jul 02 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
python实现远程控制电脑
May 23 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python脚本框架webpy的url映射详解
Nov 20 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开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP多进程简单实例小结
2019/11/09 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
vue写一个组件
2018/04/09 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
python切换hosts文件代码示例
2013/12/31 Python
详细介绍Python中的偏函数
2015/04/27 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
PyQT实现多窗口切换
2018/04/20 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
super()与this()的区别
2016/01/17 面试题
单位工程竣工验收方案
2014/03/16 职场文书
秋天的雨教学反思
2014/04/27 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
高二语文教学反思
2016/02/16 职场文书
七年级语文教学反思
2016/03/03 职场文书