3、python自学之路-数据类型之序列与元组

  序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。最常见的是列表和元组。

  列表与元组最大的区别在于列表可以进行更改,而元组不行。

  列表是最常用的python数据类型,列表的数据项不需要具有相同的类型(可插入字符、数字、列表、元组、字典等),可对其进行增删改查的操作。

  下面是列表及元组的属性例子。

列表的增加和修改: 

 1 #!usr/bin/env python
 2 #author lhy
 3 #列表学习:
 4 #列表的增删改查
 5 list = ['纸巾','杯子','瓶子','笔记本','手机']
 6 #增加
 7 list.append('电脑')#追加到最后面
 8 print(list)
 9 list.insert(1,'支架')#增加到序列为1的位置
10 print(list)
11 #修改
12 list[1]='高支架'
13 print(list)
View Code

增加修改结果如图:

列表的删除操作:

# del list[1] #删除高支架方法一,如果不指定序列号,表示删除整个列表
# list.remove('高支架')#删除高支架方法二
# list.pop(1)##删除高支架方法三,如果括号里面没有值,表示默认为最后一个
# print(list)
View Code

列表查询操作:

#查询,python查询顺序是从左到右
print(list)#==list[:]#查询所有列表
print(list[1])#==list[:]#查询指定序列号
print(list[2:6])#==list[:]#查询所有第2-5内容,顾头不顾尾
print(list[-1])#==list[:]#查询所有最后一个
print(list[-3:])#==list[:]#查询倒数3个
print(list.index('手机'))#==list[:]#查询手机所在的序列号
View Code

查询结果如图:

列表的其他属性:复制、拼接、计数、倒置、排序:

list1 = list.copy()
print(list1)
list1.append('测试copy是否影响其他')
print(list,list1)#copy之后互相不影响
list.extend(list1)#拼接list 与list1,测试拼接之后被拼接是否不存在
print(list,list1)#拼接之后被拼接的还存在
print(list.count('手机'))#计算对象在列表中的个数
list.reverse()#倒置列表
print(list)
list.sort()#python排序机制timesort,机制详见http://www.cnblogs.com/clement-jiao/p/9243066.html
print(list)
View Code

代码结果如图(由于列表过长,右边只截取了部分):

备注:copy有深浅copy之说:

          浅copy只copy一层,变量的每一次初始化,都开辟了一个新的空间,将新内容的地址赋值给变量。

          深copy是是每遇到新的内容,就又新开辟一个空间来存该值,简单来说就是完全备份,相互不会影响。

浅copy说明:
list_1 = [1,2,3,[1,2,3]]
list_2 = list_1.copy()#生成一个新的内容为[1,2,3,内存地址(列表[1,2,3])] ,若内存地址(列表[1,2,3])变化,则引用该值的变量都会变化。

   深copy说明:

   import copy

list_1 = [1,2,3,[1,2,3]] 
list_2 =copy.deepcopy(list_1)#生成一个新的内容为[1,2,3,内存地址(列表[1,2,3])] ,再生成一个地址[1,2,3],即完全备份

举例代码如下:

# 浅copy
name = [1,2,3,[1,2,3]] #实际上在内存中已经生成了一个新列表,[1,2,3,内存地址],内存地址指[1,2,3]的内存地址
name1 = name.copy()
print(name,name1)
name[0] = 11 #改变name第一个值改为11
print(name,name1)#仅name变化,name1不变
name[3][0] = 4 #改变列表第一个值为4(内存地址的值)
print(name,name1)#都变为4
# 深copy
import copy
name2 = copy.deepcopy(name) #深copy相当于备份,不会因为修改而变化
name[0] = 1 #改变name第一个值改回为1
print(name,name2)#仅name变化,name1不变
name[3][0] = 5 #改变列表第一个值为5(内存地址的值)
print(name,name2)#仅name变化,name1不变
View Code

代码执行结果如图:

 

元组查询同列表

元组学习:元组类似列表,但是不能修改,只能查询同list
array_test = ('纸巾','杯子','瓶子','笔记本','手机')
print(dir(array_test))#'count', 'index'
print(array_test)#查询所有
print(array_test[1])#查询序列为1的位置
print(array_test[2:6])#查询序列为1的位置
print(array_test[-1])#查询序列为最后一个的位置
print(array_test.count('杯子'))#计算元素个数
print(array_test.index('手机'))
# del array_test#删除元组
# del array_test[1] #报错TypeError: 'tuple' object doesn't support item deletion
print(array_test)
View Code

执行代码如图:

 

转载于:https://www.cnblogs.com/simple-girl/p/9803192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值