这里记录Python中容易被忽视的小问题
一、input(...)和raw_input(...)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#简单的差看帮助文档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
2
3
4
5
6
7
8
|
>>> 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]
1
2
3
4
5
|
>>> ( True and [ "True" ] or [ "False" ])[ 0 ] 'True' >>> ( False and [ "True" ] or [ "False" ])[ 0 ] 'False' >>> |
三、获得指定字符串在整个字符串中出现第N次的索引
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# -*- 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的说明如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
>>> 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 |
五、遍历序列的方法
1
2
3
4
5
6
7
|
>>> List = [ 'a' , 'b' , 'c' ] >>> for index, value in enumerate ( List ): print index, value 0 a 1 b 2 c >>> |
六、使用python random模块的sample函数从列表中随机选择一组元素
1
2
3
4
5
6
|
import List = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] slice = random.sample( List , 5 ) #从List中随机获取5个元素,作为一个片断返回 print slice print List #原有序列并没有改变。 |
七、用json打印包含中文的列表字典等
1
2
3
4
5
6
|
# -*- 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 ) |
输出结果:
1
2
|
>>> [{ "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程序设计有所帮助。