Python周例-列表

列表:由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。

Python的列表相当于C语言的数组,但Python的列表操作要简单很多。

在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。

<一>访问列表元素

例如,下面的代码从列表names中提取第一个名字:

names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
print(names[0].title())#还可以对任何列表元素调用第2章介绍的字符串方法

<二>索引从0而不是1开始

在Python中,第一个列表元素的索引为0,而不是1。

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素:
 

names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
print(names[0])
print(names[1].title())
print(names[2])
print(names[3])
print(names[-1])
print(names[-2])

这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2 返回倒数第 二个列表元素,索引-3 返回倒数第三个列表元素,以此类推。

<三>使用列表中的值

names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
message_1=names[2].title()+", l'm your father!"
print(message_1)

我们使用names[2]的值生成了一个句子,并将其存储在变量message_1 中,输出是一个简单的句子,Guo Jia Le, l'm your father!        

<四>确定列表元素个数


方法:len(list),使用函数len() 可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4。

演示代码:

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print(len(cars))

Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。

<五>修改列表元素

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)

结果为:

['honda', 'yamaha', 'suzuki']

['ducati', 'yamaha', 'suzuki']


<六>列表添加新元素


1.在列表末尾添加元素:append()

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)

结果为:

['honda', 'yamaha', 'suzuki']

['honda', 'yamaha', 'suzuki', 'ducati']

方法append() 让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append() 语句添加元素。

2.在列表中插入元素:使用方法insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)

结果为:['ducati', 'honda', 'yamaha', 'suzuki']

<七>从列表中删除元素

1. 使用del 语句删除元素(知道要删除的元素在列表中的位置,即知道其索引)

motorcycles = ['honda', 'yamaha', 'suzuki']
del motorcycles[1]
print(motorcycles)

结果为:['honda', 'suzuki']

2. 使用方法pop() 删除元素(可删除列表末尾的元素,并让你能够接着使用它)

有时候,你要将元素从列表中删除,并接着使用它的值。例如,你可能需要获取刚被射杀的外星人的 x 和 y 坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能 要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。

motorcycles = ['honda', 'yamaha', 'suzuki']
popped_motorcycle = motorcycles.pop() 
print(motorcycles) 
print(popped_motorcycle)   #能够接着使用已删除的值

结果为:['honda', 'yamaha']        suzuki

3. 弹出列表中任何位置处的元素(pop()+索引)

motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)
print(first_owned)

结果为:honda

注:每当你使用pop() 时,被弹出的元素就不再在列表中了。

如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元 素后还能继续使用它,就使用方法pop() 。

4. 根据值删除元素(remove(),也可接着使用它的值)

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
too_expensive = 'ducati' 
motorcycles.remove(too_expensive)
print(motorcycles) 
print("\nA " + too_expensive.title() + " is too expensive for me.")

结果为:

['honda', 'yamaha', 'suzuki', 'ducati']

['honda', 'yamaha', 'suzuki']

A Ducati is too expensive for me.

注:方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值

<八>组织列表

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

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
cars.sort()
print(cars)

结果为:['audi', 'bmw', 'subaru', 'toyota']

以按与字母顺序相反的顺序排列列表元素只需向sort() 方法传递参数reverse=True。

cars.sort(reverse=True)

['toyota', 'subaru', 'bmw', 'audi']

2.使用函数sorted() 对列表进行临时排序(不改变后续结果)

places=['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
print(places)
print(sorted(places))
print(places)
print(sorted(places,reverse=True))

['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
['london', 'moscow', 'new York', 'tai wan', 'xiang gang']
['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
['xiang gang', 'tai wan', 'new York', 'moscow', 'london']

3.倒着打印列表

方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。

4.制定规则排序

MyList1.sort(key=len) #对列表按照元素的长度进行排序


<九>列表统计某个元素的个数
方法:count()
MyNum=MyList.count("math")#计算列表中‘math'元素的个数

<十>两个列表连接
方法:list1.extend(list2)将列表2加到列表1
MyList1.extend(MyList2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值