python基础之有序集合list和tuple

开始

今天看到python内置的数据类型,list可以说是列表,列表是一种数据类型

list是一种有序的集合,可以随时添加和删除其中的元素

我们列几个名字,用一个list来表示,举个例子:

>>> list1=['张三','jack','李四']
>>> list1
['张三', 'jack', '李四']

这里写的list1就是一个list,用len()函数可以获得list元素的个数,举个例子:

>>> len(list1)
3

也可以用索引来访问list中每一个位置的元素,切记,索引是从0开始的,举个例子:

>>> list1[0]
'张三'
>>> list1[1]
'jack'
>>> list1[2]
'李四'
>>> list1[3]
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    list1[3]
IndexError: list index out of range

前三个本身存在所以正常,而list[3]由于索引超出了范围,所以报了一个IndexError错误,所以,一定要确保索引不要越界!!!

如果要获取某个元素,比如获取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,倒数第二个,倒数第三个,举个例子:

>>> list1[-1]
'李四'
>>> list1[-2]
'jack'
>>> list1[-3]
'张三'
>>> list1[-4]
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    list1[-4]
IndexError: list index out of range

可以看到,一旦索引越界就会出现错误。

增加和删除元素

list是一个可变的有序表,可以往list中追加元素到末尾,举个例子:

>>> list1.append('tom')
>>> list1
['张三', 'jack', '李四', 'tom']

当然了,你说我想把元素插到想放的位置,也可以,用索引,比如插入到索引号为1的位置,举个例子:

>>> list1.insert(1,'孙悟空')
>>> list1
['张三', '孙悟空', 'jack', '李四', 'tom']

既然有增加,当然也得有删除,删除用pop()方法,比如删除list末尾的元素,举例:

>>> list1.pop()
'tom'
>>> list1
['张三', '孙悟空', 'jack', '李四']

如果你想替换就是修改某个元素,可以直接赋值给对应的索引位置,举例:

>>> list1[2]='杨戬'
>>> list1
['张三', '孙悟空', '杨戬', '李四']

list里面的元素不一定就得是字符串类型,我这样写只是方便,写个数据类型不同的list,举例:

>>> list2=['哪吒',123,True]
>>>

list里面的元素也可以另外一个list,举例:

>>> list3=['python','c',['.net','java'],'c#']
>>> len(list3)
4

可以看到,list3只有4个元素,其中list3[2]也是一个list,拆开来看就很容易理解,举例:

>>> s=['.net','java']
>>> list3=['python','c',s,'c#']

想获取list中的元素,比如'.net'可以写成s[1]或者list3[2][1],可以看到list3可以看成一个二维数组。

如果一个list中一个元素也没有,就是一个空的list,它的长度就是0,举例:

>>> a=[]
>>> len(a)
0
>>> len(list3)
4

tuple

另外还有一种有序列表叫元组,tuple.tuple和list很类似,但是tuple一旦初始化就不能再修改了,举例:

>>> a1=('项羽','虞姬','tom')

到这,a1的这个tuple不能改了,也没有append()方法,insert()方法,其他获取元素的方法和list是一样的,可以正常使用a1[0],a1[-1],但是不能赋值成另外的元素。

那么不可变的tuple还有什么意义?因为tuple不可变,所以代码更安全,能用tuple代替list就尽量使用tuple.

tuple的特点:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,举例:

>>> a2=(1,2,3)
>>> a2
(1, 2, 3)

定义空的tuple也是一样的,不写元素就可以了,和list的写法是有区别的,注意一下,举例:

>>> a3=0
>>> a3
0

看两个例子的区别吧,举个例子:

>>> b =(1)
>>> b
1
>>> 
>>> b1=(1,)
>>> b1
(1,)

第一个例子是定义了只有一个元素的tuple,定义的不是tuple,是1这个数,因为括号()既可以表示tuple又可以表示数学公式中的小括号,这样就不对了。所以,python规定,这种情况按小括号计算,那么计算结果就是1了。

第二个例子,只有一个元素的tuple定义时必须加一个逗号,来消除错误。

python在显示只有一个元素的tuple时,也会加一个逗号,避免误解成数学计算意义上的括号。

看个“可变的”tuple,,来看一下:

>>> c=('a','b',['A','B'])
>>> c[2][0]='X'
>>> c[2][1]='Y'
>>> c
('a', 'b', ['X', 'Y'])

注意看,这个tuple定义的时候有3个元素,分别是'a','b'和一个list。当我们把list的元素'A''B'修改为'X''Y'后,tuple才变的。表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

主要还是要理解这个概念,还有就是tuple的每一个元素本身也不能变的!!!

最后

list和tuple是python内置的有序集合,一个可变,一个不可变,根据情况来选择。

学编程最重要的还是理解概念和手写代码,光看是没有什么用的,多练习多思考能掌握的更牢固。

今天的分享到此未知。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值