Python语言基础学习笔记(2)——列表

其他相关系列文章:
Python语言基础学习笔记(1)——变量、字符串

1列表的介绍

什么是列表

names = ['zhangsan','lisi','wangma',12,18,54]

首先从格式上来讲,前面有一个单词names,为列表名;有一个=可以理解为赋值;后面有一对中括号,将内部的元素括起来,并且每一元素之间用,分割;列表内的字符串需要用引号括起来。

  • 列表的定义:由一系列特定顺序排列的元素组成,列表名命名的规则与变量相同。列表内可以加入任何信息。
  • 列表的形式:在python中,使用[]来表示列表,并用(英文状态下的 , )来分割其中的元素。
  • 回顾变量的命名规则
    ①变量名只能包含字母、数字、下划线。其中,变量名的开头可以是字母或者是下划线,但不能是数字。
    ②变量名不能包含空格,但可以使用下划线分割其中的单词。例如:变量名可以是first_name,last_name,但不能是first name,last name
    ③不能将python的关键词和函数名作为变量名称。例如:初学者第一步一般都是写一句print('hello world'),其中的print即可以理解为输出关键词,它就不可以作为变量名。
    ④为图后续方便和容易理解,变量名应该设置的简短且具有描述性。例如,如果需要一个关于演员的变量,可以将变量命名为actor;如果需要一个关于电影的变量,可以将变量命名为movie

在定义中有提到,列表内可以加入任何信息。详细来讲,列表内可以加入任何数据类型,字符串、数字、以及后续接触到的所有数据类型,甚至是内嵌一个列表,这样也是合理的,例如,如下在列表names中又嵌入一个列表:

names = ['zhangsan','lisi','wangma',12,18,54,[1,2,3,'qi','yuan']]

列表的初步使用

列表的输出使用和前章所讲赋值后的变量的使用有些类似,通过print可以直接输出列表。

names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age)

输出结果为

['zhangsan','lisi','wangma',12,18,54]

可见,输出内容和列表中的内容是一样的,也就是输出了列表中的所有内容。

2列表元素的访问

  • (此小节以之前所讲字符串的切片和索引为基础)

列表是有序集合,因此要访问列表的任何元素,只需要将该元素的索引告诉python程序即可。

names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2])

输出结果为:

wangma

再次强调,在python中,第一个列表元素的索引为0,而不是1

  • 在列表元素的使用中,也可以使用之前所讲字符串方法,将元素进行转换。

例如:将首字母变为大写,在字符串中使用的是.title(),在此举例

names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2].title())

输出结果为

Wangma

对于最后一个列表元素的访问,python提供了一种便利语法,通过将索引指定为-1即可

names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,8,9,11,13]
print(names_age[-1])

执行后会输出:

13

可以使用拼接合并,利用列表中的元素,创造一个消息,例如:

names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,13]
message = 'your name is ' + name_age[0] + '.'
print(message)

输出结果为

your name is zhangsan.

3修改、添加和删除列表元素

大多数所创建的列表都是动态的,也就意味着,可以对已经创建的列表进行修改、添加、删除元素。

修改

列表修改元素其实是和访问一个元素是类似的。
例如,想要把现有元素中的wangma修改成wangwuwu:

names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age[2] = 'wangwuwu'
print(names_age)

输出结果为

['zhangsan','lisi','wangwuwu',12,18,54]

可以看到,新输出的为更改后的元素。若要修改元素,直接将想要修改的值,赋值给索引即可、

添加

在列表中添加元素需要使用append()函数,这个函数可以在列表的末尾,添加一个元素。
例如,想要在元素末尾添加一个10000:

names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.append(10000)
print(names_age)

输出结果为:

['zhangsan','lisi','wangma',12,18,54,10000]

插入

在大多数情况下,不一定是要在列表的末尾加元素,因此还提供了一种在列表中插入元素的函数。也就是insert()函数,可以在想要插入的位置,插入一个元素。
例如,想在zhangsan后面插入zhangwu:

names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.insert(1,zhangwu)
print(names_age)

输出结果为:

['zhangsan','zhangwu','lisi','wangma',12,18,54]

即成功的在索引号为1的位置,插入了zhangwu

删除

在列表中,删除的方法,在这里介绍三种

del方法

例如,想通过del函数,删除zhangwu

names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
del names_age[1]
print(names_age)

输出结果为
['zhangsan','lisi','wangma',12,18,54]

pop()方法

例如想要删除lisi,使用pop()方法为:

names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name = name_age.pop(2)
print(names_age)

输出结果为:

['zhangsan','zhangwu','wangma',12,18,54]

而通过输出打印变量name可以发现这种方法和上述del方法的区别

print(names)

输出结果为

lisi

输出的结果就是被删除的字符串的信息,它把要删除的数据临时保存下来,后续如果需要,还能继续使用,而del是将数据彻底删除。

remove()方法

当你不知道要从列表中删除的元素的位置时,可以使用这个函数来删除指定元素。

names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name_age.remove(‘lisi’)
print(names_age)

输出结果为

['zhangsan','zhangwu','wangma',12,18,54]

实现了直接知道元素信息,将元素进行删除,而不需要知道元素位置。

4组织列表

当我们创建完列表之后,列表元素的顺序常常都是无规律的,但有时会以特定的顺序来呈现一个信息。
在这里,主要介绍四种列表组织方式。需要注意各个函数的使用方法不一。

使用sort()函数对列表进行永久性排序

sort()函数:将列表中的元素按照字母顺序排列(只能对字符串进行排列)
例如

names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.sort()
print(names_age)

输出结果为:

['lisi','wangma','zhangsan','zhangwu']
使用sorted()函数对列表进行临时排序

sorted()函数:不改变原来实际排列顺序,同时给出按照字母顺序排列的临时列表
例如,想要对比看一下sorted()函数的临时排序情况,方便对比,输出三次,第一次为使用临时排序后,第二次为输出列表,第三次为使用sort()函数输出。

names_age = ['zhangsan','zhangwu','lisi','wangma']
print(sorted(name_age))            #临时排序
print(names_age)                   #真实列表、原列表
names_age.sort()
print(names_age)                   #完全改变内容顺序

输出结果为

['lisi','wangma','zhangsan','zhangwu']
['zhangsan','zhangwu','lisi','wangma']
['lisi','wangma','zhangsan','zhangwu']

可见,第二次输出的列表依然是前期原列表,并未进行改变,第一次输出仅仅是临时排序后输出。

使用reverse()函数对列表进行倒着打印

reverse()函数:永久性的反转列表元素的排列顺序,可以通过再次使用该函数,恢复到原来的排列顺序。

names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.reverse()
print(names_age)

输出结果为:

['wangma','lisi','zhangwu','zhangsan']
使用len()函数确定列表的长度

len()函数:快速获取列表的长度

names_age = ['zhangsan','zhangwu','lisi','wangma']
print(len(names_age))

输出结果为

4

5遍历列表

使用for循环,依次访问列表的元素
前期讲过通过索引号来访问列表,而索引号太过复杂,因此需要for循环。
for循环举例:

names = ['zhang','wu','li','wang','zhao']
for name in names:
    print(name)    #注意print前空一个Tab

上述for循环代码,第一行定义列表names,将后面的元素赋值给names;第二行使用for循环来遍历names,其中的name是新定义的一个变量名,names是列表名,后面一定要记得需要一个冒号;第三行首先需要一个Tab键,然后将变量输出。方便理解,遍历的意思即为:按顺序访问每一个。
它的运行原理是,首先将列表中的第一个元素赋值给变量name,然后输出name,然后第二个元素。。。循环如此。
上面for循环输出结果为

zhang
wu
li
wang
zhao

上述运行的原始代码中,第二行与第三行是一个for循环整体,如果循环结束,可以在第四行加入一条语句,终结程序,且仅仅运行一次。如下所示:

names = ['zhang','wu','li','wang','zhao']
for name in names:
    print(name)    #注意print前空一个Tab
print('print end')

运行结果为:

zhang
wu
li
wang
zhao
print end

如果将其与第三行对齐,加入for循环之中,测试如下

names = ['zhang','wu','li','wang','zhao']
for name in names:
    print(name)    #注意print前空一个Tab
    print('print end')

输出结果为

zhang
print end
wu
print end
li
print end
wang
print end
zhao
print end

因此,在以后的使用中,要注意哪些是需要循环的,哪些是不需要循环的。如果不需要循环,就不需要一个Tab键。

6操作数值列表

数值列表,即在一个列表中,他里面的元素都是由数值组成的
range()函数:生成一系列数字,它里面包括三个参数

range(start,end,scan)
参数的含义:
start是计数开始的位置,默认是从0开始
end是计数结束的位置
scan是每次跳跃的间距,默认为1

例如:

for x in range(1,10):
    print(x)

输出结果为:

1
2
3
4
5
6
7
8
9

由此可见,输出结果不包括end的参数10
如果range()函数内只有一个参数,则表示会产生从0开始计数到输入参数(前一位整数)结束的整数。如下

for x in range(10):
    print(x)

输出结果为

0
1
2
3
4
5
6
7
8
9

如果是3个参数,情况如下:

for x in range(1,10,3):
    print(x)

输出结果为:

1
4
7

如上所示,range()函数是为了创建一系列的数值,但是并不能产生一个数值列表。使用range()创建数字列表,需要使用list()函数,将数据进行转化为列表。
例如:

numbers = list(range(1,10))
print(numbers)

输出结果为

[1,2,3,4,5,6,7,8,9]   #成功将这一组数值转化为列表
  • 小练习:输出10以内所有奇数的平方
    思路解析:首先需要一个空列表,并且使用for循环找到10以内的奇数对其进行赋值,然后计算其平方,将结果添加进另一个新列表中,循环结束后输出新列表。
x = []
for x in range(1,10,2):
    y.append(x**2)
print(y)

输出结果为

[1,9,25,49,81]

若想要更简单的代码,python提供一种列表解析法。如下

y = [x**2 for x in range(1,10,2)]
print(y)

列表解析的工作原理,首先将第一个值1赋值给x,x又将值赋值给它前面的x进行平方运算,运算结果作为第一个y值,如此循环。

  • 对数字列表进行简单的统计计算
    min()函数,求最小值
    max()函数,求最大值
    sun()函数,求总和
    例如:注意函数的使用方法
x = min(1,2,3,4,5,6)
y = max(1,2,3,4,5,6)
z = [1,2,3,4,5,6]
print(x)
print(y)
print(sum(z))
1
6
21

同样min()和max()也可以改为sum()函数的使用方法,如下

z = [1,2,3,4,5,6]
print(min(z))
print(max(z))
print(sum(z))

输出结果为

1
6
21

7使用列表的一部分

  • 处理列表的部分元素需要用到前期所讲过的知识——切片
    创建切片,可以指定要使用的第一个元素和最后一个元素的索引。这点与range()相似
    例如:
names = ['zhang','wu','li','wang','zhao']
print(names[1:3])
print(names[:3])
print(names[2:])
print(names[-3:])

输出结果分别为:
需要注意的是,第一个元素索引号为0,结尾元素不会被输出。

['wu', 'li']
['zhang', 'wu', 'li']
['li', 'wang', 'zhao']
['li', 'wang', 'zhao']

如果想要复制列表,可创建一个包含整个列表的切片,同时省略起始索引和终止索引([:])
例如:

names = ['zhang','wu','li','wang','zhao']
names2 = names[:]
print(names2)

输出结果为:

['zhang','wu','li','wang','zhao']

8元组

当我们需要一个不能被修改的列表时,就需要用到元组。
元组是不可变的列表,元组使用()来标识
元组也可以通过索引来访问其元素,也可以使用for循环遍历元组中的所有值。
例如,尝试修改元组中的数值:

tuple = (1,2,3,4,5,6,7)
tuple[2] = 100
print(tuple)

结果就会报错

Traceback (most recent call last):
  File "tuple.py", line 2, in <module>
    tuple[2] = 100
TypeError: 'tuple' object does not support item assignment
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,935评论 17 410
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,739评论 2 9
  • 一个努力的北漂女和一个什么都要问妈妈的安稳男。当婚姻遇到危机,陈可去找了她的贵人,顾大姐。我很喜欢的一个角色,有那...
    小丑鱼和蝉阅读 1,396评论 0 0
  • 我想去美丽的远方旅游、过诗一样的日子, 远方也有人想来我这里。 后来我们深入交流了一下, 各自决定待在自己家里。
    利哥街访阅读 211评论 7 2