第四章 列表、元组

4.3 列表的基本操作

       列表可以使用所有序列的操作,除此之外还有一些特有的操作。

       列表元素赋值:修改列表中的前两个元素。

s = ["Bill", "Mike", "John"]
s[0] = "Mary"
s[1] = 20
print(s)            # 运行结果:['Mary', 20, 'John']

       超过索引范围将会抛异常。

s = ["Bill", "Mike", "John"]
s[-1] = "Mary"       	#  修改列表最后一个元素值
print(s)       			#  运行结果:['Bill', 'Mike', 'Mary']   
s[3] = "Peter"       	#  索引3超出了列表s的索引范围(-3到2),会抛出异常
s[-3] = "蜘蛛侠"    		#  索引-3是列表s的第1个元素,相当于s[0]
print(s)             	#  运行结果:['蜘蛛侠', 'Mike', 'Mary']
s[-4] = "钢铁侠"     	# 索引-4超出了列表s的索引范围(-3到2),会抛出异常

       删除列表元素

number = [1,2,3,4,5,6,7,8]
del number[2]               # 删除第3个索引

       分片赋值和分片获取子列表一样,也需要指定分片的范围。使用list函数可以将字符串分解成由字符组成的列表,并替换字符串中的某一部分。

s = ["hello", "world","yeah"]
s[1:] = ["a","b","c"]        	# 将列表s从第2个元素开始替换成一个新的列表
print(s)                       	# 运行结果:['hello', 'a', 'b', 'c']
name = list("Mike")         	# 使用list函数将“Mike”转换成由字符组成的列表
print(name)                   	# 运行结果:['M', 'i', 'k', 'e']
name[1:] = list("ary")      	# 利用分片赋值操作将“Mike”替换成了“Mary”    
print(name)                   	# 运行结果:['M', 'a', 'r', 'y']

       也可以分片插入或删除一些列表元素。

numbers = [1,6,7]
numbers[1:1] = [2,3,4,5]
print(numbers)
numbers[1:4] = []
print(numbers)

4.4 列表方法

       概念:方法需要在类中定义,通过对象引用。格式如下
              对象.方法(参数)
              列表提供了一些非常有用的方法

print("----测试append方法-----")
numbers = [1,2,3,4]
numbers.append(5)        	# 将5添加到numbers列表的最后
print(numbers)      	    # 运行结果:[1, 2, 3, 4, 5]
numbers.append([6,7])		# 将列表[6,7]作为一个值添加到numbers列表后面
print(numbers)            	# [1, 2, 3, 4, 5, [6, 7]]

print("----测试clear方法-----")
names = ["Bill","Mary", "Jack"]
print(names)
names.clear()           	# 清空names列表,等价于 names = []
print(names)      		    	# 运行结果:[]

print("----测试copy方法-----")
a = [1,2,3]
b = a                      	# a和b指向了同一个列表
b[1] = 30                 	# 修改列表b的元素值,a列表中对应的元素值也会改变
print(a)                   	# 运行结果:[1, 30, 3]

aa = [1,2,3]
bb = aa.copy()           	# bb是aa的副本
bb[1] = 30                	# 修改bb中的元素值,aa中的元素值不会有任何变化
print(aa)                  	# 运行结果:[1, 2, 3]

print("----测试count方法-----")
search = ["he", "new", "he", "he", "world", "peter",[1,2,3],"ok",[1,2,3]]

#  搜索“he”元素在search出现的次数,运行结果:3
print(search.count("he"))

#  搜索[1,2,3]整个元素在search出现的次数,运行结果:2
print(search.count([1,2,3]))

print("----测试extend方法-----")
a = [1,2,3]
b = [4,5,6]
a.extend(b)   				#  将b列表接在a列表的后面,extend方法并不返回值,比字串拼接效率高
print(a)      				#  运行结果:[1, 2, 3, 4, 5, 6]

# 如果使用列表连接操作,效率会更低,并不建议使用
a = [1,2,3]
b = [4,5,6]
print(a + b)				#  运行结果:[1, 2, 3, 4, 5, 6],效率很低

# 可以使用分片赋值的方法实现同样的效果
a = [1,2,3]
b = [4,5,6]
a[len(a):] = b
print(a)      				#  运行结果:[1, 2, 3, 4, 5, 6]        

print("----测试index方法-----")
s = ["I", "love", "python"];
print(s.index("python"))	#  查询”python”的索引位置,运行结果:2,返回索引位置
print("xyz在列表中不存在,所以搜索是会抛出异常.")
#str.index("xyz")        	# 会抛出异常,因为”xyz”在s列表中不存在
  
print("----测试insert方法-----")
numbers = [1,2,3,4,5]            
numbers.insert(3,"four")    # 在numbers列表的第4个元素的位置插入一个”four”
print(numbers)             	# 运行结果:[1, 2, 3, 'four', 4, 5]

#  可以使用分片赋值实现同样的效果
numbers = [1,2,3,4,5]
numbers[3:3] = ['four'] 	# 使用分片赋值在列表中插入另一个列表,[3:3]不是一个元素,而是一个位置
print(numbers)            	# 运行结果:[1, 2, 3, 'four', 4, 5]




print("----测试pop方法-----")
numbers = [1,2,3]

#  pop方法返回删除的元素值
print(numbers.pop())       		#  删除numbers列表中的最后一个元素值,运行结果:3
print(numbers.pop(0))      		#  删除numbers列表中的第1个元素值,运行结果:1
print(numbers)              	#  运行结果:[2]

print("----测试remove方法-----")
words = ["he", "new", "he", "yes", "bike"]
words.remove("he")        		# 删除words列表中的第1个”he”
print(words)                  	# 运行结果:['new', 'he', 'yes', 'bike']
# words.remove("ok")        	# 删除不存在的列表元素,会抛出异常

print("----测试reverse方法-----")
numbers = [1,2,3,4,5,6]
numbers.reverse()           	#  将numbers列表中的元素值倒序摆放
print(numbers)               	#  运行结果:[6, 5, 4, 3, 2, 1]

print("----测试sort方法-----")
numbers = [5,4,1,7,4,2]                
numbers.sort()                  # 对numbers列表中的元素值按升序排序(默认)
print(numbers)                  # 运行结果:[1, 2, 4, 4, 5, 7]

values = [6,5,2,7,"aa","bb","cc"]
# 待排序列表的元素类型必须是可比较的,字符串和数值类型不能直接比较,否则会抛出异常
# values.sort()                 #  抛出异常

# 使用sort方法排序,会直接修改原列表,如果要想对列表的副本进行排序,可以使用下面的代码
# 方法1:使用分片操作
x = [5,4,1,8,6]
y = x[:]
y.sort()	           			# 对列表的副本进行排序
print(x)               			# 运行结果:[5, 4, 1, 8, 6]
print(y)             			# 运行结果:[1, 4, 5, 6, 8]

# 方法2:使用sorted函数
x = [7,6,4,8,5]
y = sorted(x)        			# 对x的副本进行排序
print(x)              			# 运行结果:[7, 6, 4, 8, 5]
print(y)              			# 运行结果:[4, 5, 6, 7, 8]

# sorted函数可以对任何序列进行排序,例如对字符串进行排序
print(sorted("geekori"))  		# 运行结果:['e', 'e', 'g', 'i', 'k', 'o', 'r']

x = [5,4,1,7,5]
x.sort(reverse=True)     		# 对列表x中的元素值降序排列,不能与print整体嵌套
print(x)                   		# 运行结果:[7, 5, 5, 4, 1]

4.5 元组

       元组与列表一样,也是一种序列,唯一不同的就是元组不能修改,即元组是只读的。注意单个元素的元组必须带后缀逗号,否则不能与圆括号运算符区别。
       元组的主要作用就是元组可以在映射中作为键值使用,而且很多内建函数和方法的返回值就是元组。

a0 = 1,2,3,4,5
a1 = (1,2,3,4,5)
a2 = ()                 # 空元组
a3 = 30,                # 单元素元组
a4 = (12,)              # 单元素元组
a5 = 40                 # 普通数值
value = tuple[[1,2,3]]  # 将序列转换为元组,tuple函数

       几个示例如下:

# 创建元组
numbers = 1,2,3     
print(numbers)

names = ("Bill", "Mike", "Jack")
print(names)

# 实现一个值的元组
values = 40,
print(values)

# 生成5个同样值的元组
print(5 * (12 + 4,))
# 不是元组,就是一个数
print(5 * (12 + 4))

# 将一个序列转换为元组(tuple函数)
print(tuple([1,2,3]))
print(tuple("geekori"))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值