Python基础 Day03 列表

Python基础 列表

  1. 列表是什么
  2. 访问列表元素
  3. 使用列表中的值
  4. 修改,添加和删除元素
  5. 组织列表
  • sort()对列表永久性排序
  • sorted()对列表临时排序
  • 将列表倒过来打印
  • 确定列表的长度
  • 使用列表避免索引错误

列表是什么?

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

# 创建一个列表
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print(nameList)
print(type(nameList)) #查看nameList 的类型
['张三丰', '张无忌', '李莫愁', '杨过']
<class 'list'>
# 访问列表元素
# 列表是有序的,就好像我们的火车票,每个人都有自己的位置(站票、霸座除外。。)
name_0 = nameList[0]
print(name_0)
print(type(name_0)) #查看第一个元素的类型
张三丰
<class 'str'>

Python中的索引是从0开始的。
如果要取第一个元素就是在括号中输入0,第二个就输入1,一次类推,
那么问题来了,如果我列表有上亿个元素,如果要得到最后一个,岂不是要写好多?

#取最后一个元素,便捷的方法
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
lastName = nameList[-1] #通过 -1 就可以很快的得到最后一个元素
print(lastName)
杨过
#使用列表中名字,打印一段话
newList = [5, 'Python', 'CSDN']
print(newList)
print(type(newList))
msg = "我在" + newList[2] + "的" + newList[1] + str(newList[0]) + "群和大家交流" # 大家可以考虑用 .format() 来格式这段文字
print(msg)
print("--------华丽的分割线----------")
#我们看到第一个元素是一个数字
print(type(newList[0]))
#将数字和字符串链接时,要将它转换成字符串,通过str()方法,可以将数字转成字符串
temp = str(newList[0])
print(type(temp))
[5, 'Python', 'CSDN']
<class 'list'>
我在CSDN的Python5群和大家交流
--------华丽的分割线----------
<class 'int'>
<class 'str'>
# 修改列表元素
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print("原来列表的第一个元素:", nameList[0])
nameList[0] = "海贼王路飞"
print("新列表的第一个元素:", nameList[0])
原来列表的第一个元素: 张三丰
新列表的第一个元素: 海贼王路飞
# 在列表中添加元素
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print("添加前:", nameList)
nameList.append('娜美')
print("添加后:", nameList)
添加前: ['张三丰', '张无忌', '李莫愁', '杨过']
添加后: ['张三丰', '张无忌', '李莫愁', '杨过', '娜美']

方法append()是将元素添加到原列表的末尾,而不影响其他元素的位置,
就如同排队,后来的再末尾。
那如果想插队怎么办呢?(虽然不太好。。。)

# 在列表中指定位置插入新元素
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print("插入前:", nameList)
#现在小龙女看不过去了,要插在李莫愁和杨过中间,该怎么办,总不能
#把'张三丰', '张无忌', '李莫愁'全干掉吧
nameList.insert(3,'小龙女') #通过insert()方法可以插入,3 表示新添加元素的位置,记得要从0开始数
print("插入后:", nameList)
插入前: ['张三丰', '张无忌', '李莫愁', '杨过']
插入后: ['张三丰', '张无忌', '李莫愁', '小龙女', '杨过']
# 删除元素
#现在李莫愁,不开心了啊,居然要干掉小龙女
print("删除前:", nameList)
#通过del 来删除指定元素
del nameList[3]
print("删除后:", nameList)
删除前: ['张三丰', '张无忌', '杨过', '杨过']
删除后: ['张三丰', '张无忌', '杨过']
# 除了del() 可以删除,pop()方法也可以
#现在准备干掉杨过 (怎么都这么暴力啊。。。) ,因为pop只能从后删除,先委屈一下杨过吧。。。
print("删除前:", nameList)
popName = nameList.pop()
print("删除的是:", popName)
print("删除后的列表是:", nameList)
删除前: ['张三丰', '张无忌', '李莫愁', '杨过']
删除的是: 杨过
删除后的列表是: ['张三丰', '张无忌', '李莫愁']
# 现在把杨过复活
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print(nameList)
# 然后干掉李莫愁,还是用pop()反方法,那该怎么办呢?
print("删除前:", nameList)
popname = nameList.pop(2)
print("删除的是:", popname)
print("删除后:", nameList)
['张三丰', '张无忌', '李莫愁', '杨过']
删除前: ['张三丰', '张无忌', '李莫愁', '杨过']
删除的是: 李莫愁
删除后: ['张三丰', '张无忌', '杨过']
# remove方法来删除
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print("删除前:", nameList)
delName = '李莫愁'
nameList.remove(delName)
print("删除后:", nameList)
删除前: ['张三丰', '张无忌', '李莫愁', '杨过']
删除后: ['张三丰', '张无忌', '杨过']
# 对列表进行排序
numList = [1, 3, 2, 5, 4, 8, -2, -10, 0]
print("排序前", numList)
numList.sort()
print("排序后", numList)
排序前 [1, 3, 2, 5, 4, 8, -2, -10, 0]
排序后 [-10, -2, 0, 1, 2, 3, 4, 5, 8]

sort()就是对原有数据进行排序,而且是永久排序,即排序后,原来的顺序就变了。
就像公交车抛锚,大家重新上了一个公交车。

# 上面的例子是从小到到大排的,如果反过来,该怎么处理呢?
numList = [1, 3, 2, 5, 4, 8, -2, -10, 0]
print("排序前", numList)
numList.sort(reverse = True) # reverse = True 
print("排序后", numList)
排序前 [1, 3, 2, 5, 4, 8, -2, -10, 0]
排序后 [8, 5, 4, 3, 2, 1, 0, -2, -10]
# 有永久排序,那么有没有临时排序呢?
numList = [1, 3, 2, 5, 4, 8, -2, -10, 0]
print("排序前", numList)
tempList = sorted(numList) # 这里用sorted()方法来进行临时排序,需要注意他的用法和sort()有点区别
print("临时排序的列表", tempList)
print("排序后", numList)
排序前 [1, 3, 2, 5, 4, 8, -2, -10, 0]
临时排序的列表 [-10, -2, 0, 1, 2, 3, 4, 5, 8]
排序后 [1, 3, 2, 5, 4, 8, -2, -10, 0]
# 同样sorted也支持 reverse = True
numList = [1, 3, 2, 5, 4, 8, -2, -10, 0]
print("排序前", numList)
tempList = sorted(numList, reverse = True) 
print("临时排序的列表", tempList)
print("排序后", numList)
排序前 [1, 3, 2, 5, 4, 8, -2, -10, 0]
临时排序的列表 [8, 5, 4, 3, 2, 1, 0, -2, -10]
排序后 [1, 3, 2, 5, 4, 8, -2, -10, 0]
# 将列表翻转显示
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print("翻转前", nameList)
nameList.reverse() # 这个方法,并不会进行排序,只是单纯的翻转过来
print("翻转后:", nameList)
翻转前 ['张三丰', '张无忌', '李莫愁', '杨过']
翻转后: ['杨过', '李莫愁', '张无忌', '张三丰']

# 确定列表长度
nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
nameListLen = len(nameList) #通过len来确认列表中元素的个数,即列表的长度
print("nameList有{}个元素:".format(nameListLen) ) #这里用到了.format方法
nameList有4个元素:

列表处理是要避免索引错误(下标越界)

就是说,列表总共就3个元素,我非要取第四个,这是程序就会报错
IndexError: list index out of range

nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
print(nameList[6])
---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-39-200e045138a9> in <module>()
      1 nameList = ['张三丰', '张无忌', '李莫愁', '杨过']
----> 2 print(nameList[6])

IndexError: list index out of range

当不知道列表有多少元素时,可以通过len()方法来确认一下,这样可以避免越界问题,如果要取最后一个,可以通过-1来获取

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值