Python notes(2)-list and tuple

list

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

比如,列出班里所有同学的名字,就可以用一个list(有点像数组又有点像链表)表示:

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
//负数表示从后往前
>>> classmates[-1]
'Tracy'        //倒数第一个
>>> classmates[-2]
'Bob'        //倒数第二个    
>>> classmates[-3]
'Michael'    //倒数第三个

越界时Python会报一个IndexError错误

替换时,直接赋值给对应位置:

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

用.append()追加元素到末尾:

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

用.insert( x , y )可以把y元素插入到下标为x的位置:

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

.pop()将末尾元素删除:

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

.pop(i)将指定位置的删除,其中i是下标:

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

list里面的元素的数据类型也可以不同,比如:

>>> L = ['Apple', 123, True]

ist元素也可以是另一个list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

注意s只有4个元素,其中s[2]又是一个list

拆开写:

>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']

要拿到’php’可以写p[1]或者s[2][1],因此s可以看成是一个二维数组

tuple

tuple类型(和list相似但是tuple中元素一旦确定便不能更改//指向不变)

也就是说当定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

(但是元素可以乱搞啊 -_- 反正py大法好,里面的元素可以是变量、list,还随时可以改类型)

据说用tuple类型更安全

要定义一个只有1个元素的tuple,如果这么定义:

>>> t = (1)
>>> t
1

定义的不是tuple,是1这个数,因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义

Python规定,这种情况下,按小括号进行计算,所以结果是1

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t
(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号