python学习笔记(三)
一、python中的循环:
1.1 while循环
while
语句的语法如下:
while condition: statement1 statement2
默认情况下,print()
除了打印你提供的字符串之外,还会打印一个换行符,所以每调用一次 print()
就会换一次行,如同上面一样。
你可以通过 print()
的另一个参数 end
来替换这个换行符,就像下面这样,下面的程序写入 ,例如:
#!/usr/bin/env python3 a, b = 0, 1 while b < 100: print(b) a, b = b, a + b #!/usr/bin/env python3 a, b = 0, 1 while b < 100: print(b, end=' ') a, b = b, a + b print()
#!/usr/bin/env python3 i = 1 print("-" * 50) while i < 11: n = 1 while n <= 10: print("{:5d}".format(i * n), end=' ') n += 1 print() i += 1 print("-" * 50)
这里我们在 while
循环里使用了另一个 while
循环,这被称为嵌套循环。你应该已经看到一条有趣的语句:
print("-" * 50)
字符串若是乘上整数 n,将返回由 n 个此字符串拼接起来的新字符串。
1.2 for循环:
通过 for
语句我们可以使用 for 循环。这里的 for 循环遍历任何序列(比如列表和字符串)中的每一个元素。下面给出示例:
>>> a = ['ShiYanLou', 'is', 'powerful'] >>> for x in a: ... print(x) ... ShiYanLou is powerful
我们也能这样做:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> for x in a[::2]: ... print(x) 1 3 5 7 9
range() 函数
如果你需要一个数值序列,内置函数 range() 会很方便,它生成一个等差数列(并不是列表):
>>> for i in range(5): ... print(i) ... 0 1 2 3 4 >>> range(1, 5) range(1, 5) >>> list(range(1, 5)) [1, 2, 3, 4] >>> list(range(1, 15, 3)) [1, 4, 7, 10, 13] >>> list(range(4, 15, 2)) [4, 6, 8, 10, 12, 14]
我们可以在循环后面使用可选的 else
语句。它将会在循环完毕后执行,除非有 break
语句终止了循环。
>>> for i in range(0, 5): ... print(i) ... else: ... print("Bye bye") ... 0 1 2 3 4 Bye bye
python 中 for
循环的 else
子句给我们提供了检测循环是否顺利执行完毕的一种优雅方法。
二、python数据结构之列表:
列表数据结构。
2.1 它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型:
>>> a = [ 1, 342, 223, 'India', 'Fedora'] >>> a [1, 342, 223, 'India', 'Fedora']
2.2 编号从零开始,你可以通过编号访问每一个盒子里面的值。对于列表,这里的编号称为索引。
我们像下面这样通过索引来访问列表中的每一个值:
>>> a[0] 1 >>> a[4] 'Fedora'
2.3 如果我们使用负数的索引,那将会从列表的末尾开始计数,像下面这样:
>>> a[0:-1] [1, 342, 223, 'India'] >>> a[2:-2] [223] >>> a[:] [1, 342, 223, 'India', 'Fedora']
2.5 切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小:
>>> a[:-2] [1, 342, 223] >>> a[-2:] ['India', 'Fedora']
有个办法可以很容易地记住切片的工作方式:切片时的索引是在两个元素之间 。左边第一个元素的索引为 0,而长度为 n 的列表其最后一个元素的右界索引为 n。
Python 中有关下标的集合都满足左闭右开原则,切片中也是如此,也就是说集合左边界值能取到,右边界值不能取到。
Python 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即大于列表实际长度)将被列表实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空列表:
>>> a[2:32] [223, 'India', 'Fedora'] >>> a[32:] []
2.6 切片操作还可以设置步长,就像下面这样:(它的意思是,从切片索引 1 到列表末尾,每隔两个元素取值。)
>>> a[1::2] [342, 'India']
2.7 列表也支持连接这样的操作,它返回一个新的列表:
>>> a + [36, 49, 64, 81, 100] [1, 342, 223, 'India', 'Fedora', 36, 49, 64, 81, 100]
列表允许修改元素:
>>> cubes = [1, 8, 27, 65, 125] >>> cubes[3] = 64 >>> cubes [1, 8, 27, 64, 125] >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> letters ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> # 替换某些值 >>> letters[2:5] = ['C', 'D', 'E'] >>> letters ['a', 'b', 'C', 'D', 'E', 'f', 'g'] >>> # 现在移除他们 >>> letters[2:5] = [] >>> letters ['a', 'b', 'f', 'g'] >>> # 通过替换所有元素为空列表来清空这个列表 >>> letters[:] = [] >>> letters []
2.8 要检查某个值是否存在于列表中,你可以这样做:
>>> a = ['ShiYanLou', 'is', 'cool'] >>> 'cool' in a True >>> 'Linux' in a False
2.9 通过内建函数 len()
我们可以获得列表的长度:
>>> len(a)
3
如果你想要检查列表是否为空,请这样做:
if list_name: # 列表不为空 pass else: # 列表为空 pass
2.10 列表是允许嵌套的(创建一个包含其它列表的列表),例如:
>>> a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b'