Python基础回顾(2)

文章目录


内容介绍

        本节主要讲Python基础知识中的列表,讲解列表的建立以及对列表的一些基础操作。


一、列表是什么?

       Python主要内置类型包括数字、序列、映射、类、实例和异常。其中序列是最基本的数据结构。序列中的每个元素都会被分配到一个数 ,用于表示它的位置,这个数称为索引。一般来说,第一位的索引是0,第二位索引是1,依此类推。

        Python包含6中内置的序列,即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象。其中列表、元组和字符串是最常用的序列。

        列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

        如下所示建立了一个列表week。列表的基本单元是元素,每个元素之间用逗号隔开。   列表的数据项不需要具有相同的类型。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

     

二、列表的操作

(一)列表的索引

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

# 列表是有序的集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
# 要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
week = ['tuesday', 'Wednesday', 'thursday', 'Friday', 'saturday']
print(week)
print(week[3])
print(week[3].title())
# 在Python中,第一个列表元素的索引为0,而不是1。(在Matlab中,第一个索引是1,后者方便于计算实用,注意不要搞混)
# Python提供了一种倒叙读取的方法,如下所示,当索引为“-2”时,指倒着取第2个列表元素。
print(week[-2])
# 列表中的元素可像使用其他变量一样被使用。例如,可以用列表中的元素拼接打印输出。
message = 'Today is '+week[2].title()+' ,tomorrow is '+week[3].title()+ '.'
print(message)

Python基础回顾(2)

(二)列表元素的增删

        如下代码和图所示,注意这里可以看出“方法”、“函数”和”语句“的区别。

# 1.在列表末尾增加一个元素,可以使用.append()方法
# 用法为  “  列表名.append('元素名')  ”
week.append('Sunday')  # 在列表最末尾插入sunday
print('\n列表末尾增加:')
print(week)
# 2.在列表任意位置插入一个元素,使用.insert()方法可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
# 用法为  “  列表名.insert(索引(数), '元素名')  ”
week.insert(0, 'Monday')  # 在列表最开头插入monday
print('\n列表中间插入:')
print(week)
# 3.删除列表任意位置处的元素,可以使用del语句,使用时要知道需删除元素的索引。
# 用法为  “  del 列表名[需要删除元素的索引]  ”
del week[3]
print('\n列表中间删除:')
print(week)
# 4.有时候需要弹出列表中的某个元素,并且保存下该元素,可以使用pop()方法。
# 用法为   “  a = 列表名.pop(需要弹出的元素索引)  ”这条语句可以将列表中对应索引处的元素弹出并赋值给a,同时列表中删除该元素。
TanChuYuanSu = week.pop(-1)  # 弹出最后一个元素——特别地,如果pop()的括号中什么参数也不给,默认弹出的是最后一个元素。
print('\n列表中删除并弹出:')
print(week)
print('弹出的元素是:', TanChuYuanSu)
# 5.在不知索引只知道元素值的情况下,删除列表中某个元素,可以使用remove()方法
print('\n只知道值,不知道索引的删除:')
BuShangXue = 'saturday'
print('因为不上学,所以去掉', BuShangXue)
week.remove(BuShangXue)
print(week)
# remove()方法一次只能删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

Python基础回顾(2)

(三)列表的排序、求列表的长度

week = ['Monday', 'tuesday', 'Wednesday', 'thursday', 'Friday', 'saturday', 'Sunday']
week1 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
number = [1, 23, 4, 5, 1214, 75, 43, 9, 2, 0]
# 1.对列表进行永久性排序,可以使用sort()方法.
print('原始列表:')
print(week)
print(week1, '\n')
week.sort()
print('顺序排列之后的列表:')
print(week)
# 看上去似乎没有按照字母排序,再试试week1
week1.sort()
print(week1, '\n')
# 这里,当所有元素首字母都是大写之后,sort方法成功将其按字母从小到大排列
number.sort()
print(number)
# 也可以用这个方法排列数字
number.sort(reverse=True)
print(number, '\n')
# 如果给sort一个参数“reverse=True”,则可以实现从大到小的逆叙排列。
# 值得注意的是,sort的排列是永久的不可逆的。至于为什么不能正确排列出大小写字母,需要掌握ASCII码的相关知识。
# 2.要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。
# 函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
week1 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print("原始列表:")
print(week1)
print("\n使用sorted()方法进行排序后:")
print(sorted(week1))
print("\n看看原始列表有没有被改变:")
print(week1)
# 如果需要将字母逆序排列,可向函数sorted()传递参数reverse=True。
print("\n逆序排列:")
print(sorted(week1, reverse=True))
# 3.如果需要把列表中的元素倒序排列,可使用reverse()方法。注意,此处倒序排列指的是把列表中第一个元素放到最后一个,以此类推。
week1 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print(week1, '\n')
week1.reverse()
print('倒序排列以后:')
print(week1)
# 4.如果想知道列表的长度,可以使用函数len()。
print('列表week1的长度为:', len(week1))

Python基础回顾(2)


总结

        本次学习了Python最常见的数据类型列表,前文给出了一些具体的针对列表的操作,以及这些操作产生的影响。此处参考网络和书本,给出一个较为全面的总结式概括,以方便后续查找使用。鉴于本人能力有限,欢迎批评指正。

对于列表的操作:

1.Python包含以下函数
cmp(list1, list2)
# 比较两个列表的元素
len(list)
# 列表元素个数
max(list)
# 返回列表元素最大值
min(list)
# 返回列表元素最小值
list(seq)
# 将元组转换为列表

2.Python包含以下方法:
list.append(obj)
# 在列表末尾添加新的对象
list.count(obj)
# 统计某个元素在列表中出现的次数
list.extend(seq)
# 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)
# 从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)
# 将对象插入列表
list.pop([index=-1])
# 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)
# 移除列表中某个值的第一个匹配项
list.reverse()
# 反向列表中元素
list.sort(cmp=None, key=None, reverse=False)
# 对原列表进行排序

3.组合与截取:
[a, b, c] + [d, e, f]——>[a, b, c, d, e, f]
# 组合两个列表
['666'] * 6	——>['666', '666', '666', '666', '666', '666']
# 对列表中元素进行重复
3 in [1, 2, 3]——>True
# 判断元素是否存在于列表中,返回布尔值
for x in [1, 2, 3]:
# 让x在列表中依次取值,循环次数为列表的长度
列表名[头下标i:尾下标j:步长k]
list[1:2:66]
# 截取列表中一部分,从第一个数索引所在的元素开始,到第二个数索引所在的元素为止,步长是第三个数
# 这三个数可以缺省,一般有这几种可能:
# 1.只有头下标i和冒号(代表的是从该头下标i的元素开始截取,一直到最后)
# eg:list[1:]表示从第2位开始截取,第2位及之后所有内容被截取出来。
# 2.只有冒号和尾下标j(代表的是从开始一直截取到j-1的元素)
# eg:list[:10]表示从第1位开始,到第9位之间的所有内容被截取出来。
# 3.头下标i,冒号和尾下标j都有(代表的是从i一直截取到j-1的元素)
# eg:list[1:10]表示从第2位开始,到第9位之间的所有内容被截取出来。
# 4.头下标i,冒号,尾下标j,冒号,步长k都有(代表的是从i开始,每k步取一次,一直截取到j-1位)
# eg:list[1:10:2]表示从第2位开始,每2位取一次,一直截取到第9位。即取出第2、4、6、8位。

上一篇:java日期工具类--获取两个日期之间的工作日天数(只去除周六日,未去除节假日)


下一篇:frosh week HDU 树状数组求逆序数