列表

列表是什么

列表是由一系列按特定顺序排列的元素组成,在python中使用[]括号来表示列表,并用逗号来分隔其中的元素。

例:

heros  = ['an琪拉',"鲁班7号","亚瑟"]

print(heros)

访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需要将元素的位置或索引告诉python即可,,要访问列表元素,可以指定列表名称,再指出元素的索引,将其放在方括号内。

例:

heros  = ['an琪拉',"鲁班7号","亚瑟"]

print(heros[0])

#访问列表元素的语法,当你请求列表元素时,python返回该元素,但是不包括括号和引号。

还可以使用之前学到的转换字符串大小写,用来格式化;

例:

heros  = ['an琪拉',"鲁班7号","亚瑟"]

print(heros[0].title())#首字母进行了大写

索引是从0开始而不是1

在python中,第一个列表元素的索引为0,而不是1。在大多数编程语言中都是如此,这与列表操作的底层实现相关。

第二个列表元素的索引为1,根据这种简单的计数方式,要访问任何元素,都可以在其位置减1,并将结果作为索引。例:要访问第4个元素,使用的索引为3。

例:

heros  = ['an琪拉',"鲁班7号","亚瑟",'兰陵王']

print(heros[3])

python为访问最后一个元素提供了特殊的语法。可以通过负索引,来返回列表的最后一个元素。

例:返回最后一个元素

heros  = ['an琪拉',"鲁班7号","亚瑟",'兰陵王']

print(heros[-1])

print(heros[-2])#返回倒数第二个元素,以此类推

使用列表中的各个值

可以像使用其他变量一样使用列表中的各个值。例如,你可以使用拼接根据列表中的值来创建消息。

例:

heros  = ['an琪拉',"鲁班7号","亚瑟",'兰陵王']

message7 = ' 是新手很喜欢的英雄'

print(heros[-1] + message7)


练习:

#练习20 将一些朋友的姓名存储在一个列表中,将其命名为names 依次访问列表中的每个元素,

# 从而将每个朋友姓名依次打印出来

names = ['jack','luse','li','may']

print(names[0],names[1],name[2],name[3])

#练习21 问候语,继续使用姓名列表,

# 但是不打印每个人的姓名,而是给每个人打印一条消息。每条消息都包含相同的问候语

names = ['jack','luse','li','may']

print(names[0] +  ' 新年快乐')

print(names[1] +  ' 新年快乐')

print(names[2] +  ' 新年快乐')

print(names[3] +  ' 新年快乐')

#练习22 自己的列表,想想自己喜欢的通勤方式,例如骑摩托车或者开汽车,

# 并创建一个包含多种通勤方式的列表,根据该列表打印一个有关通勤方式的宣言

commuting_mode = ['drive a car','Cycling' ,'run']

print(commuting_mode[0] + ' 时间最短')

print(commuting_mode[1] + ' 速度第二')

print(commuting_mode[2] + ' 速度最慢')



修改、添加、删除元素

修改列表元素

修改列表元素与访问列表元素语法类似。要修改的列表元素,可以指定列表名和要修改的元素索引,再指定该元素的新值。

例:

heros = ['安琪拉','亚瑟','李白']

heros[0] = '鲁班'

print(heros)#此时输出结果,列表的第一个元素变成了鲁班

在列表末尾添加元素

在列表中添加新元素时,最简单的方式是将元素附加到列表末尾。给列表附加元素时,默认添加到列表末尾。

例:

heros = ['安琪拉','亚瑟','李白']

heros.append('项羽')

print(heros)#此时输出,可以看到项羽被添加到列表的最后


创建一个空列表, 将元素全部添加到列表中

例:

heros = []

heros.append('钟馗','虞姬','阿古朵','司空震')

print(heros)#此时报错ypeError: list.append() takes exactly one argument (4 given),因为append一次只能添加一个元素

修改后:

heros = []

heros.append('钟馗')

heros.append('司空震')

heros.append('阿古朵')

heros.append('虞姬')

print(heros)

在列表中插入元素

使用方法insert()可以在任何位置添加新元素。为此,需要指定新元素的索引值。

例:

heros = ['安琪拉','亚瑟','李白']

heros.insert(1,'孙斌')

print(heros)#此时输出,索引1变成了孙斌,其他元素向右移了一位

从列表中删除元素

●使用del语句删除元素

知道删除的元素在列表中的位置,可以使用del语句删除

例:

heros = ['安琪拉','亚瑟','李白']

del heros[0]

print(heros)

注意:使用del删除元素后,就无法再访问到元素了

●使用方法pop()弹出元素

如果想把元素从列表中删除,但是还需要使用它的值,可以使用pop方法进行删除,默认删除列表最后一个元素

因为列表就像是一个栈,删除列表末尾的元素相当于弹出栈顶元素。

例:

heros = ['安琪拉','亚瑟','李白']

heros_pop = heros.pop()#删除的元素可以赋值给新的变量

print(heros_pop)

弹出列表中的任何位置的元素

在pop()方法中指定元素的索引即可弹出任何位置的元素

例:

heros = ['安琪拉','亚瑟','李白']

heros.pop(1)#弹出列表第2个元素

print(heros)

通过事例,我们可以根据使用场景,选择删除元素,还是弹出元素。

根据值删除元素

有时候,我们不知道列表中要删除元素的位置,只知道要删除的元素。可以使用remove()方法。

例:

heros = ['安琪拉','亚瑟','李白']

heros.remove('李白')

print(heros)#可以看到元素值为李白的元素被删除

注意:

•remove方法也是弹出,弹出后的值可以存储到变量中。

•remove只能删除一次,如果列表中出现多次要删除的值,需要循环删除。

练习:

#练习31  如果你可以邀请任何人一起共进晚餐,你邀请那些人?请创建一个列表,其中包含3个你要邀请的人,

# 然后使用这个列表打印消息,邀请这些人来与你共进晚餐

names = []

names.append('老王')

names.append('老张')

names.append('老李')

print(names)

print(names[0] + ' 来吃饭')

print(names[1] + ' 来吃饭')

print(names[2] + ' 来吃饭')

print(names[0] + ' 有事儿,不能来吃饭')

#练习32 修改要求嘉宾名单,你刚得知有一个嘉宾无法参加,因此需要邀请另一位。

# 修改邀请名单 将无法参加的嘉宾,更换

# 再打印一次邀请

names[0] = '老吴'

print(names[0] + ' 来吃饭')

print(names[1] + ' 来吃饭')

print(names[2] + ' 来吃饭')

print('找到了一个大的餐桌,所以可以再来三个人')

#练习33 得到消息,有了一个大的包间,还可以再邀请3位

names.insert(0,'老刘')#老刘在第一位

names.insert(0,'老钱')#老钱在最新的人前

names.append('老赵')#老赵最后

print(names[0] + ' 来吃饭')

print(names[1] + ' 来吃饭')

print(names[2] + ' 来吃饭')

print(names[3] + ' 来吃饭')

print(names[4] + ' 来吃饭')

print(names[5] + ' 来吃饭')

print('因为食材不足,只能邀请两人了')

#练习34 缩减名单,因为新购买的食材不足 

# 在33练习后,打印一条消息,只能邀请两人用餐。

# 使用pop不断的弹出嘉宾,直到剩下两人,每次弹出消息都要发送抱歉

a= names.pop()

print(a + '抱歉')

b = names.pop()

print(b + '抱歉')

c = names.pop()

print(c + '抱歉')

d = names.pop()

print(d + '抱歉')

#对于剩下的两位,每一位打印一条消息

print(names[0]+ ' 来吃饭')

print(names[1] + ' 来吃饭')

#使用del将最后两位嘉宾,程序结束时,名单为空

del names[0]

del names[0]

print(names)

组织列表

在创建列表中,元素的顺序是无法预测的,所以需要对列表进行排序。

使用sort()方法对列表进行永久排序

python中的sort()方法可以对列表进行排序。

例如:

我们有一个英雄列表,想让英雄按照字母进行排序

heros = ['ya瑟','an琪拉','zhong馗','lu班']

print(heros)

heros.sort()

print(heros)

print(heros)

注意:sort()方法是永久排序

也可以使用sort()方法进行倒叙,sort()方法提供了reverse=True

heros = ['ya瑟','an琪拉','zhong馗','lu班']

print(heros)

heros.sort(reverse=True)

print(heros)

print(heros)


使用函数sorted()对列表进行临时排序

要保留列表元素原来的排列顺序,可以使用函数sorted()

例:

heros = ['ya瑟','an琪拉','zhong馗','lu班']

print(sorted(heros))

print(heros)#原始列表顺序未更改

sorted()方法也支持倒叙,可以传入reverse=True

倒着打印列表

想要反转列表元素的排列顺序,可以使用reverse()

例:

heros = ['ya瑟','an琪拉','zhong馗','lu班']

print('原始数据',heros)

heros.reverse()

print(heros)

注意:reverse()方法不是按照字母进行排序,而是直接将列表倒过来

确定列表的长度

使用函数len()方法,可以快速获取列表的长度。

heros = ['ya瑟','an琪拉','zhong馗','lu班']

print(len(heros))#可以看到输出元素长度为4

注意:len()方法的计算是从1开始,所以不需要 +1 

练习:

#放眼世界,想出5个想要去的国家

#将这些国家放在一个列表中,并确保国家不是按照字母顺序排列的

countrys = ['U.S.A', 'Germany','U.S','Japan','India']

#按原始排序打印该列表,不要考虑输出是否整洁

print(countrys)

#使用sorted()安字母顺序打印这个列表,同时不要修改它

print(sorted(countrys))

#再次打印该列表,核实排列顺序未变

print(countrys)

#使用sorted()按照字母顺序相反的顺序打印这个列表,同时不要修改它

print(sorted(countrys,reverse=True))

#再次打印该列表,核实排列顺序未改变

print(countrys)

#使用reverse()方法修改列表元素排列顺序,打印该列表,核实排列顺序改变

countrys.reverse()

print(countrys)

#再使用reverse()方法修改元素排列顺序,打印该列表,核实已经恢复到原来的排列顺序

countrys.reverse()

print(countrys)

#使用sort()修改该列表,使其元素按照字母顺序排列,打印该列表,核实排列顺序确实变了

countrys.sort()

print(countrys)

#使用sort()修改该列表,使其元素按照与字母顺序相反的顺序排列,打印该列表,核实排列顺序确实变了

countrys.sort(reverse=True)

print(countrys)

扩展:

尝试用各个函数,储存到列表,如:山丘,河流,城市,美食,或是你喜欢的任何东西,要求使用所有学到的函数来处理这个列表。

操作列表

你已经学习了操作列表中的元素,现在你可以学习如何遍历整个列表,这样只需要几行代码,无论多长的列表,都能高效的处理。

遍历整个列表

现在我们使用for循环进行遍历列表。

例:

countrys = ['U.S.A', 'Germany','U.S','Japan','India']

for country in countrys:

    print(country)

深入研究循环

理解循环的概念很重要,因为它是计算机自动完成重复工作的常见方式之一。

countrys = ['U.S.A', 'Germany','U.S','Japan','India']

for country in countrys:#这行代码让python获取列表countrys中的第一个值,并把值存储到变量country中,

    print(country)#然后python读取代码,后续依次执行

在for循环中执行更多的操作

在for循环中,可以对每个元素执行任何操作。可以包含多少行代码都可以,for循环对于执行多个元素的列表很好用。

例:

countrys = ['U.S.A', 'Germany','U.S','Japan','India']

for country in countrys:

    print(country.lower() + '是美丽的国家')

在for 循环之后要做的操作

for循环之后怎么做什么?通常我们进行总结性的输出或者接着执行程序晚期必须完成的任务。

for 循环后面,没有缩进的代码,只执行一遍,不会进行重复执行。

例:

heros = ["李白","安琪拉","钟馗",'亚瑟']

for i in heros:

print(i)

print('争取早日上王者吧')#可以看到,放在for循环之外的代码,执行了一遍

避免缩进错误

●对于for循环之后的语句属于for循环的部分代码,一定要缩进,如果你忘记了缩进会报错:

IndentationError: expected an indented block

●但是,也会出现没有缩进,但是程序没有报错的情况,但是这时的输出,可能不是你想要的结果。出现了逻辑错误

●如果你把不必要缩进的代码,放在了for循环内,也会导致逻辑错误

●for循环后,需要是用:号结尾,然后下一行编写要循环的代码。

创建数值列表

使用函数range()

python提供了range()函数,可以让我们轻松生成一系列的数字。

例:

for i in range(10):

print(i)

使用range()方法生成数字列表

要创建数字列表,可以使用list()方法。将range()的结果转换为列表。将range()作为list()的参数,输出为一个数字列表。

例:

num_list = list(range(10))

print(num_list)


使用range()函数时,可以指定步长

例:

for i in range(0,10,2):#循环生成0-10,步长为2的数值

    print(i)


range()方法几乎可以实现所有的数值列表。

例:创建一个1-10的平方的数值,python中**代表乘方运算

num_power = []

for i in range(1,11):

    num = i**2

    num_power.append(num)

print(num_power)

对于数字列表执行简单的统计计算

python提供了内置函数,可以轻松的计算出数字列表的最大值,最小值,总和。

例:

#求和

nums = [100,232,321,11,123]

print(sum(nums))

#求最大

print(max(nums))

#求最小

print(min(nums))

列表推导式(列表解析)

我们通过前面的例子,已经可以使用3、4行代码去生成我们想要的数值列表,这里作为提升,我们介绍一下列表推导式,它可以使用一行代码让我们完成需要的任务。

例:我们需要生成1-10的乘方数字

num_power =  [i ** 2 for i in range(1,11) ] 

print(num_power)

语法解析:

首先我们需要,使用一个列表名,然后指定一个左[,并定义一个表达式,用于我们需要存储到列表中的值,这个例子中,是i**2 求值得平方然后编写一个for循环用于给表达式提供数值最后加上右]作为结尾

注意:●这里的for循环没有:结尾

●推到是需要多加练习,可以提升你的代码效率

练习:

#数到20:使用一个for 循环打印数字1-20(含)

for i in range(1,21):

    print(i)

#创建一个列表,其中包含数字1-100000在使用一个for循环将这些数字打印出来

nums = list(range(1,100001))

print(nums)

#创建一个列表,包含数字1-100000.再用min max核实开头和结尾是1和100000 sum求出和

nums1 = list(range(1,100001))

print(min(nums1))

print(max(nums1))

print(sum(nums1))

#通过函数range()方法,计算1-20奇数 再使用for循环打印

for a in range(1,21,2):

    print(a)

#创建一个列表,包含3-30内能被3整除的数字,使用for循环打印

nums_ji =[]

for n in  range(3,31):

    if n % 3 == 0:

        nums_ji.append(n)

print(nums_ji)

#一个数字乘3次被称为立方,Python中使用**3表示,创建一个列表包含前1-10的立方,使用for循环打印

for i in range(1,11):

    i  = i**3

    print(i)

#使用列表解析生成列表,包含1-10的立方

nums1_li = [i**3 for i in range(1,11) ]

print(nums1_li)

使用列表的一部分

在工作中,如果我们只需要使用列表的一部分内容,我们处理这部分的内容被称为列表的切片

切片

创建要切片的列表,可以使用第一个元素和最后一个元素的索引。与range()函数一样,例如要输出0-2的元素,值为0、1、2。

例:

heros = ['李白','孙尚香','后裔','白起']

print(heros[0:2])

●如果没有指定索引[:],python会从开头切到结尾

●如果想要最后3个元素,可以使用负值 [-3:0]

●切片之后的数据类型是list

遍历切片

可以使用for循环进行切片后进行元素遍历

例:

heros = ['李白','孙尚香','后裔','白起']

print(heros[:])

print(type(heros[:]))#可以看到切片后的类型是list

for hero in heros[-3:]:

print(hero)

复制列表

如果使用列表的过程中,我们需要创建全新的列表,可以使用切片,起第一个元素始最后一个元素。

例:

heros = ['李白','孙尚香','后裔','白起']

heros_new = heros[:]

print(heros_new)

heros.append('孙斌')#为了证明我们现在有两个列表,向原始列表添加新的元素

print(heros)

print(heros_new)#复制的列表没有新元素




顶顶顶

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

推荐阅读更多精彩内容

  • 一 认识列表 1.什么是列表列表(list) 列表是python内置的可变并且有序的容器类数据类型(序列) 有序:...
    Fly_withbird阅读 240评论 0 1
  • 容器类型:列表和元组 数据收纳盒 用来收纳数据对象的数据类型 以一种规则的下标索引方式(收纳盒名字+ 数字序号)访...
    大象信步走来阅读 269评论 0 0
  • day4 - 数字和列表 数字 python中和数字相关的类型:int(整型)、float(浮点型)、bool(布...
    y_j杨健阅读 397评论 0 0
  • 1、什么是列表 列表格式:列表名称 赋值符 [元素1,元素2,...] ,注意,列表中的所有下标都是从0开始,列...
    水调歌头_f072阅读 566评论 0 0
  • 列表是python以及其他语言中最常用到的数据结构之一。Python中使用[]来创建列表 列表中的每项是可以改变的...
    为什么被使用啊啊啊阅读 253评论 0 0