给有C或C++基础的Python入门 :Python Crash Course 4 操作列表 4.1--4.3

操作列表,也就是遍历列表。本章我们要学的就是如何遍历列表。

 

4.1--4.2 遍历列表

  遍历列表,用for循环。

不同于C++或者C语言的for循环,Python的for循环更容易让人理解。

看一个例子:

1 fruits = ['apple', 'banana', 'orange'];
2 for fruit in fruits:
3     print("I like " + fruit.title() + ". ");
4 print("I really love fruit!");

 

其语法结构是for + 一个变量(自己定义的,在每次循环的时候从列表依次传递参数到这个变量,如第二行的fruit)+ 列表名(fruits)。

  这里要注意的两点:

  1. 是在for循环后面,没有缩进的代码都只执行一次,而不会重复执行。这里可以结合C中for循环结构体 ‘{}‘ 理解:

  即:Python不同于C++,C++根据{}来代码行和前一个代码行的关系,而Python则根据缩进判断

  2. 是别忘了加冒号!!!,python 的 for循环代码行结束需要加冒号

 

4.3 创建数值列表

  5个函数:

  1. range()。

  2. list()。

  3. min()。

  4. max()。

  5. sum()。

一, range()

 

  1.使用range()函数时要注意差一行为,也就是如下代码:

1 for value in range(1, 5):
2     print(value)
3     
4 print('\n')
5 
6 for value in range(1, 6):
7     print(value);

上面代码的意图是依次打印出1到5数字,但是第一个代码只能打印1到4,这是由于编程语言中经常看到的‘’差一行‘’行为

而第二个代码则达到了意图。

 

  2.  指定range()函数的步长:

  代码如下:

for value in range(2, 11, 2):
    print(value)

意思:for(int i = 2; i < 11; i += 2 )  cout  << i << endl; -----学过C++的应该很明白。

二,list()函数

list()函数用于创建数字列表。其将range()的结果直接转化为列表。

样例如下:

1 numbers = list(range(1, 6))
2 print(numbers)
3 
4 print('\n')
5 
6 even_numbers = list(range(2, 11, 2))
7 print(even_numbers)

上面的两个样例结果是:[1, 2, 3, 4, 5] 和 [2, 4,  6, 8, 10]。

本质就是将range()得到的值压入栈中

三,三个用于对列表执行简单统计操作的函数

类似C++中的max, min函数,但是这三个相当与遍历整个列表找到最大,最小以及和的值,功能强大。

样例代码:

1 digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
2 print(min(digits))
3 print(max(digits))
4 print(sum(digits))

四,列表解析

代码解析书里的解释是:将for循环和创建新元素的代码合并成一行,并自动附加新元素

这样会使代码更为简洁。

比如做一个平方数集,普通的代码如下:

1 squares = []
2 for value in range(1, 11):
3     square = value**2
4     squares.append(square)
5     
6     print(squares)

或者:

1 squares = []
2 for value in range(2, 11, 2):
3     squares.append(value**2)
4     
5     print(squares)

如果经过代码解析,直接将for循环和创建步骤结合在一起:

squares = [value**2 for value in range(1, 11)]
print(squares)

非常简洁。但是,作为一个学习C++的人,先value*2 再for循环会感到逻辑紊乱。

                            To be continued...


如有错误,欢迎评论指正!

 

posted @ 2018-08-25 23:18  mpeter  阅读(408)  评论(0编辑  收藏  举报