Python 数据类型基础
字面常量
所谓字面,就是我们在程序中直接以值的行式来操作、表现(可以对照变量); 所谓常量,是指这些值不能再被改变了。 字面常量的种类: (1)整形 整形数值 默认是int型,例如:22,33 如果要表示一个long型,则加 l、L后缀。例如:22L、33L (2)浮点型 浮点数默认是双精度dobule型的。例如:33.3 如果要表示单精度浮点型,加f、F后缀。例如:33.3F (3)字符串型 包含在双引号""中的字符序列,是字符串。例如:“hello,world” (4)字符型 用单引号''包含,或者用/转义的字符,是字符型。例如:/n、'a'
Python表达式
列表推导式(list comprehension)
语法:[expr for iter_var in iterable] 或 [expr for iter_var in iterable if cond_expr]
说明:
第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
>>> [x**2 for x in range(9)]
[0, 1, 4, 9, 16, 25, 36, 49, 64]
>>> [x**2 for x in range(9) if x%2==0]
[0, 4, 16, 36, 64]
>>> [(x+1,y+1) for x in range(3) for y in range(3) if x>=y] #嵌套的for语句?
[(1, 1), (2, 1), (2, 2), (3, 1), (3, 2), (3, 3)]
生成器表达式
语法:(expr for iter_var in iterable) 或 (expr for iter_var in iterable if cond_expr)
说 明:列表解析是比较早的Python版本里就引进的(好像是2.0版本),而生成器表达式则是在2.4中引入的新内容,它和列表解析的语法很像,但是 在大数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。当然,列表解析并不会被遗弃。
说 明:列表解析是比较早的Python版本里就引进的(好像是2.0版本),而生成器表达式则是在2.4中引入的新内容,它和列表解析的语法很像,但是 在大数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。当然,列表解析并不会被遗弃。
举例:
>>> (i + 1 for i in range(10) if i % 2)
<generator object <genexpr> at 0x011DC5D0>
>>> g = (i + 1 for i in range(10) if i % 2)
>>> l = []
>>> for j in g:
l.append(j)
>>> l
[2, 4, 6, 8, 10]
从上面可看出,列表解析和生成器表达式语法虽然很像,但实质上还是有很大不同的。
>>> (i + 1 for i in range(10) if i % 2)
<generator object <genexpr> at 0x011DC5D0>
>>> g = (i + 1 for i in range(10) if i % 2)
>>> l = []
>>> for j in g:
l.append(j)
>>> l
[2, 4, 6, 8, 10]
从上面可看出,列表解析和生成器表达式语法虽然很像,但实质上还是有很大不同的。
条件表达式
Python2.5之后加入的
smaller = x if x < y else y
Python流程语句
循环中的else
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
例子:
#!/usr/bin/python
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
输出:
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5