Python拾遗


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函数可变参数定义及其参数传递方式详解

点击打开链接



#-----------------------------------------------

windows下获取非阻塞的键盘按键输入

可以使用类似C/C++中调用kbhit()、getch()的组合方式

import msvcrt
#msvcrt,mscrt只可以在windows系统使用,用来访问Visual C运行时库的很多有用的功能。

while True:
    if msvcrt.kbhit():
        print "getch %s"%msvcrt.getch()


#-----------------------------------------------

python 多进制转换

#三十六位数字类型    012...789abc...xyz
print  int('z', 36)      #35
print  int('10', 36)     #36

#-----------------------------------------------


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值