空(None)
None可以用来表示某一个变量的值缺失,类似于其他语言中的null。
像其他的空值:0,[]和空的string,布尔变量给的是False而不是True。
1 | if None: print ( "None got interpreted as True" ) else : print ( "None got interpreted as False" )
|
Salin selepas log masuk
结果是:
1 | None got interpreted as False
|
Salin selepas log masuk
当一个函数没有返回任何值时,就会返回None:
1 2 | def some_func(): print ( "Hi" )
var =some_func() print ( var )
|
Salin selepas log masuk
结果是:

View Code
字典(Dictionaries)
字典是一种给值赋予关键字的数据结构。列表可以被看做一种有着某种范围的整数关键字的字典。
字典可以像列表一样索引,用方括号,只不过方括号里不在是下标,而是关键字
1 | ages={ "Dave" :24, "Mary" :42, "John" :58} print (ages[ "Dave" ]) print (ages[ "Mary" ])
|
Salin selepas log masuk
结果是:

View Code
索引一个不是字典的关键字会出现错误,字典可以储存任何数据类型的值,空的字典为“{}”。
字典的关键字是不能改的。使用一个可以更改的object当做字典的关键字会产生类型错误(TypeError)。
1 2 | bad_dict={
[1,2,3]: "one two three" }
|
Salin selepas log masuk
结果是:


1 | TypeError: unhashable type: 'list'
|
Salin selepas log masuk
View Code
字典函数(Dictionary Functions)
字典的关键字可以被赋予不同的值。如果没有关键字,那就新建一个关键字:
1 2 | squares={1:1,2:4,3: "error" ,4:16}
squares[8]=64squares[3]=9print(squares)
|
Salin selepas log masuk
结果是:


1 | {1: 1, 2: 4, 3: 9, 4: 16, 8: 64}
|
Salin selepas log masuk
View Code
查看字典中是否存在某个关键字用in或not in 就像在列表中一样。
1 | nums={1: "one" ,2: "two" ,3: "three" } print (1 in nums) print ( "three" in nums) print (4 not in nums)
|
Salin selepas log masuk
结果是:

View Code
get是一个非常好用的字典method,起的作用和索引一样,但是如果在字典中找不到关键字,就会返回None,而不是错误
1 2 3 | paris={1: "apple" , "orange" :[2,3,4],
True:False,
None: "True" } print (paris.get( "orange" )) print (paris.get(7)) print (paris.get(12345, "not in dictionary" ))
|
Salin selepas log masuk
get的第二个参数的意思是找不到关键字就返回这个值。
结果是:


1 2 3 | paris={1: "apple" , "orange" :[2,3,4],
True:False,
None: "True" } print (paris.get( "orange" )) print (paris.get(7)) print (paris.get(12345, "not in the dicrionary" ))
|
Salin selepas log masuk
View Code
元组(Tuples)
元组和列表很像,但他们是不能被更改的,用括号就能新建一个元组,不用也可以……:
1 | words=( "spam" , "eggs" , "sausages" ,)
|
Salin selepas log masuk
1 | words= "spam" , "eggs" , "sausages" ,
|
Salin selepas log masuk
空元组用()新建。
元组的运行速度比列表快
其他使用方法和列表类似。
列表切片(List Slices)
列表切片是一种检索列表值的高级方法。基本的切片方法是用两个被冒号分开的整数来索引列表。这样可以从旧列表返回一个新列表。
1 | squares=[0,1,4,9,16,25,36,49,64,81] print (squares[2:6]) print (squares[3:8]) print (squares[0:1])
|
Salin selepas log masuk
结果是:


1 2 3 | [4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]
|
Salin selepas log masuk
View Code
跟range的参数相似,第一的下标的值会包括,但不包括第二个下标的值。
如果第一个下标省略,默认从头开始,
如果第二个下标省略,默认到结尾结束。
切片同样可以用于元组。
切片也有第三个参数,决定了步长。第一二个分别决定了开头与结尾。
1 2 3 4 | squares=[0,1,4,9,16,25,36,49,64,81]
print (squares[:6:2])
print (squares[3::3])
print (squares[::3])
|
Salin selepas log masuk
结果是:
1 2 3 | [0, 4, 16]
[9, 36, 81]
[0, 9, 36, 81]
|
Salin selepas log masuk
参数是复数的话就倒着走。-1是倒数第一,-2是倒数第二,第三个参数为负就会倒着切,这时候第一个参数和第二个参数就要倒着看了,也就是第二个参数变成了开始,第一个变成了结尾(因此-1会使整个列表倒序)
1 | squares=[0,1,4,9,16,25,36,49,64,81] print (squares[:-1]) print (squares[::-3]) print (squares[-3::2])
|
Salin selepas log masuk
结果是:


1 2 3 | [0, 1, 4, 9, 16, 25, 36, 49, 64]
[81, 36, 9, 0]
[49, 81]
|
Salin selepas log masuk
View Code
列表解析(List Comprehensions)
这是一种快速创建遵循某些规则的列表的方法:
1 | cubes=[i**3 for i in range(5)] print (cubes)
|
Salin selepas log masuk
结果是:

View Code
也可以包含if statement 加强限定条件。
1 | evens=[i**2 for i in range(10) if i**2 % 2==0] print (evens)
|
Salin selepas log masuk
Salin selepas log masuk
结果是:

View Code
1 | evens=[i**2 for i in range(10) if i**2 % 2==0] print (evens)
|
Salin selepas log masuk
Salin selepas log masuk
结果是:

View Code
range的范围过大会超出内存的容量引发MemoryError
String Formatting
为了使string和non-string结合,可以把non-string转化为string然后再连起来。
string formatting提供了一种方式,把non-string嵌入到string里,用string的format method来替换string里的参数。
1 2 | nums=[4,5,6]
msg= "Numbers:{0} {1} {2}" .format(nums[0],nums[1],nums[2]) print (msg)
|
Salin selepas log masuk
format里的参数和{}里的参数是对应的。{}的参数是format()里参数的下标
参数被命名这种情况也是可以的:
1 | a= "{x},{y}" .format(x=5,y=12) print (a)
|
Salin selepas log masuk
结果是:

View Code
Useful Functions
Python 内置了许多有用的函数
join ,用一个string充当分隔符把一个由string组成的列表连起来。
1 | print ( "," .join([ "spam" , "eggs" , "ham" ]))
|
Salin selepas log masuk
结果是:

View Code
replace,用一个string 取代另一个。
1 | print ( "Hello ME" .replace( "ME" , "world" ))
|
Salin selepas log masuk
结果是:

View Code
startwith和endwith,判断是否是由……开头或结束:
1 | print ( "This is a sentence." .startswith( "This" )) print ( "This is a sentence." .endswith( "sentence." ))
|
Salin selepas log masuk
结果是:

View Code
lower和upper可以改变string的大小写
1 | print ( "This is A sentence." .upper()) print ( "THIS IS a SENTENCE.." .lower())
|
Salin selepas log masuk
结果是:


1 2 | THIS IS A SENTENCE.
this is a sentence.
|
Salin selepas log masuk
View Code
split的作用于join 相反,他可以按某个string为分隔符将一串string分开并成为列表的形式。
1 | print ( "apple,eggs,banana" .split( "," ))
|
Salin selepas log masuk
结果是:
1 | [ 'apple' , 'eggs' , 'banana' ]
|
Salin selepas log masuk
有关数学的一些函数有:最大值max,最小值min,绝对值abs,约等数round(第二个参数可以决定保留几位小数),对列表里的数求和用sum等:
1 | print (min(1,2,3,4,5,6,7)) print (max(1,2,3,4,5,6,7)) print ( abs (-98)) print ( round (78.632453434,4)) print (sum([2.12121,23232323]))
|
Salin selepas log masuk
结果是:


1 2 3 4 5 | 1
7
98
78.6325
23232325.12121
|
Salin selepas log masuk
View Code
all和any可以把列表当成参数,然后返回True或 False,
1 | nums=[55,44,33,22,11] if all([i <56 for i in nums]): print ( "All smaller than 56." )
|
Salin selepas log masuk
1 | nums=[55,44,33,22,11] if any([i <22 for i in nums]): print ( "at least one is smaller than 22." )
|
Salin selepas log masuk
all和any的区别是,all需要所有的值都满足,any只需要有一个满足就行了。
枚举(enumerate),字面意思,把列表中的值按顺序一个一个列出来。
1 | nums=[55,44,33,22,11] for v in enumerate(nums): print (v)
|
Salin selepas log masuk
结果是:


1 2 3 4 5 | (0, 55)
(1, 44)
(2, 33)
(3, 22)
(4, 11)
|
Salin selepas log masuk
View Code
Atas ialah kandungan terperinci 关于python类型(type)的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!