最近几题的新知识是不是有点多?没关系今天这题也有不少新东西 :P 。当我们遇到不懂的地方把它们记录下来,就先放放回头再看,还不行就再放放再看看,慢慢来直到弄懂。
有了 if
语句和布尔表达式我们的程序能够智能化处理不同的情况,但是我们还需要它能重复完成一些繁琐的任务,这就是本题的一个重点 for-loop
(for 循环),至于它是如何工作的,需要我们在程序中体会。
让我们先来说说其他的新知识——列表(list)。它的意思很容易理解:按照顺序把东西放在一个容器里面。
而定义列表也很简单,和字符串、参数类似:用方括号括起来,用逗号隔开不同的东西。就像这些:
hairs = ['brown', 'blond', 'red']
eyes = ['brown', 'blue', 'green']
weights = [1, 2, 3, 4]
range
的用法。查一下 range
函数并理解它range(0, 6)
,而无需使用 for 循环?append
以外列表还支持哪些操作?
# 定义列表
the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters'] # 列表内可以放入不同类型的数据
# this first kind of for-loop goes through a list
# 首选 for 循环一个列表
for number in the_count:
print("This is count %d" % number)
# same as above 和上面一样
for fruit in fruits:
print("A fruit of type: %s" % fruit)
# also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
# 对于混合列表我们需要注意使用 %r 因为其中可能有各种不同类别的东西
for i in change:
print("I got %r" % i)
# we can also build lists, first start with an empty one
# 演示如何创建一个空列表
elements = []
# 另一种方法
elements = list()
# then use the range function to do 0 to 5 counts
# 使用函数 range 创建一个包含整数 0 到 5 的列表
for i in range(0, 6):
print("Adding %d to list." % i)
# append is function that lists understand.
# "append" 是列表的一个方法(函数)
elements.append(i)
# now we can print them out too 打印出来看看
for i in elements:
print("Element was: %d" % i)
最简单的变法就是查看帮助文档了,还记得我们用过的两种方法么?
( ↓↓↓↓ 刮开查看 ↓↓↓↓ )
命令符中:python -m pydoc range
python 交互模式中:help(range)
我们来摘抄一下:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive)
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
|
| 省略 ...
创建 range 函数的实例
range
函数会返回一个数字序列。它最多接受 3 个参数
例如:
range(5)
表示从 0 开始,到 5 截止,步长为 1 的一组数字。包含 0,1,2,3,4,5 五个数字
range(1, 5)
表示从 1 开始,到 5 截止,步长为 1 的一组数字。包含 1,2,3,4 四个数字
range(0, 5, 2)
表示从 0 开始,到 5 截止,步长为 2 的一组数字。包含 0, 2, 4 三个数字
从 range 中取出数字
我们在 python 交互环境中执行 range 函数其实并不能直接得到所有的数字它看齐来是这样:
如果我们想获取第 n 个数字可以这样:
x = range(0, 20, 3)
# 还记得我们提过 python 是怎么数数的么?
# python 从 0 开始数
# 所以 x 中的 第一 个和 第二 个数字是?
print(x[0])
print(x[1])
试试看喽
虽然最 for 循环终结果是没问题,但是我们单独打印 elements 的时候却是 range object (range 对象)而非我们期待的列表。至少我是这么期待的。
加在括号里面呢?(好主意)
看来不行啊!不甘心啊,再试试夹带的私货 list()
哈哈 ,还是私货厉害
(不能吐槽,不能说不喜欢查文档!!!)
轻车熟路啦啊~ 先不管双下划线的方法
>>> help(list)
Help on class list in module builtins:
class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
|
| Methods defined here:
|
| append(...)
| L.append(object) -> None -- append object to end
| 把对象添加到列表的末尾。
|
| clear(...)
| L.clear() -> None -- remove all items from L
| 清空列表
|
| copy(...)
| L.copy() -> list -- a shallow copy of L
| 浅拷贝,如列表中还有列表,则子列表改变后,
| 浅拷贝的对象也会改变。深拷贝则不会
|
| count(...)
| L.count(value) -> integer -- return number of occurrences of value
| 统计、计数。反之列表中有多少个要统计的值
|
| extend(...)
| L.extend(iterable) -> None -- extend list by appending elements from the iterable
| 用 appedn 的方法吧一个可循环的内容添加到列表末尾,
| 例如另一个列表或 range()
|
| index(...)
| L.index(value, [start, [stop]]) -> integer -- return first index of value.
| Raises ValueError if the value is not present.
| 和 range.index() 类似,返回列表中某个值的索引位置
| 例如 ['a', 'b', 'c'].index('b') 则返回值的索引1
|
| insert(...)
| L.insert(index, object) -- insert object before index
| 在索引位置插入一个值
|
| pop(...)
| L.pop([index]) -> item -- remove and return item at index (default last).
| Raises IndexError if list is empty or index is out of range.
| 从列表中抛出索引位置的值(抛出后从列表中删除),默认是最后一个值
|
| remove(...)
| L.remove(value) -> None -- remove first occurrence of value.
| Raises ValueError if the value is not present.
| 删除第一次出现的值 例 [1,2,3,1,2,3].remove(2) 则删除索引位置 1 的值
|
| reverse(...)
| L.reverse() -- reverse *IN PLACE*
| 将列表首位顺序对调
|
| sort(...)
| L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
| 对列表排序,默认是升序。有两个可选参数
| key 指定排序依据。 如 len长度, int数字, str字符
| reverse 是否倒序排列
ok 完工
《笨办法学 python3》系列练习计划——目录