在前面的内容里,我们接触到的要么是单个的数字,要么是range()函数返回的等差数列。

但现实生活中,我们碰到的往往是大量无规律的数字。比如一年内每天的气温,比如某次数学考试的成绩。


python怎么把数字添加到列表 python怎么把数字放进列表_容器类


在Python里,怎么保存这样大量无规律的数据呢?


容器类型三兄弟:列表、元组、字典

在《机器猫》里,哆啦a梦有一个魔法口袋,可以从里面掏出各种神奇的宝贝。


python怎么把数字添加到列表 python怎么把数字放进列表_元组_02


四次元口袋。又名四次元百宝袋、四维口袋,正式名称是“机械人专用四次元空间内藏秘密道具格纳口袋”

在python里,也有类似的魔法口袋。我们习惯上称为容器类型。

三种最基础的容器类型分别是

列表类


list1 = [99,100,98.5,100,97,98]


元组类


tup1 = (99,100,98.5,100,97,98)


字典类


dict1 = {1:99,2:100,3:98.5,4:100,5:97,6:98}


上面的程序,就是分别把1-6号同学的成绩“装进”了列表类,元组类和字典类的实例里。

而这三种基本容器类型中,列表类又是最基本,也是应用最广泛的。所以,我们先来介绍列表类。


实例:“我想有个家,一个不需要多大的地方”

每个实例都有一个家

实例的概念可以复习《02 只要5分钟,一文理解Python基本概念》。


python怎么把数字添加到列表 python怎么把数字放进列表_元组_03


《我想有个家》是潘美辰的代表作品之一。1990年这首歌曲获得了第一届台湾金曲奖年度最佳歌曲奖。

如 a = 6,6是数字类的一个实例。

Python提供了一个内置函数 id( ),可以返回实例的家的地址。


python怎么把数字添加到列表 python怎么把数字放进列表_元组_04


我们看到,94789371651008就是整型实例 6 的地址。

用一个简陋的火柴盒来表示6的家。

家的地址是94789371651008

6就住在家里

而铅笔就是变量a,它指向了 这个地址。


python怎么把数字添加到列表 python怎么把数字放进列表_元组_05



列表

那列表是什么呢?

列表就是编好了号的一些房子。


python怎么把数字添加到列表 python怎么把数字放进列表_容器类_06


需要特别注意的几点:

  • 下标索引),并不是“房子”在电脑里的地址!
    就像某土豪在全国各地都有房子。土豪给这些房子编了号。
    0号房子,1号房子,……
  • 编号是从0开始的
  • 入住“房子”的实例(称为元素)可以是不同类型的
list3 = ['hello',89,90,[1,2,3],90.234]


list3里,就有整型,浮点型,字符串型的实例,甚至还有另一个列表实例[1,2,3]。只要用逗号分隔开就行。

我们可以一开始就安排几个实例入住


list1 = [99,100,98.5,100,97,98]


也可以先没有实例,之后安排实例入住。


list2 = []
list2[0] = 1
list2[1] = 2


当然,也可以把原来入住的实例赶出去,换成新的实例。


list1 = [99,100,98.5,100,97,98]
list1[0] = 89



访问列表中的值

学习列表时,因为列表里的元素是自己放进去的。

所以,总有一种错觉,自己知道列表里有什么。

其实,你应该忘记列表里有什么,装作什么都不知道。


python怎么把数字添加到列表 python怎么把数字放进列表_容器类_07


于是我们用 random模块的sample()函数构造了一个随机数列的列表。


import random
list1 = random.sample(range(70,100),10)


random.sample(range(70,100),10)

就是从[70,100)里面随机挑了10个数字。

这下,你不知道列表里有什么了吧!

那么,怎么才能知道列表里有什么呢?

有如下的办法。

  • 通过下标索引
list1[0]
list1[1]


  • 通过下标索引切片
list1[2:5]
list1[:5]
list1[3:]
list1[2:5]
list1[-5:-1]


  • 通过循环迭代
for x in list1:
    print(x)


不过通常我们更习惯采用循环下标索引的方式来遍历列表里每个元素

内置函数 len(),可以返回列表里元素的个数。


n = len(list1)
for i in range(n):
    print(list1[i])



问题:列表的查找


import random
list1 = random.sample(range(1,100),80)


如上列表实例 list1 包含 [1,100) 里随机的80个数。

查找数字88是否包含在list1里。