• list

Python内置的列表类型,好玩的是可以用负的索引倒着取值(索引0是第一个元素,-1是最后一个元素,-2是倒数第二个)

items = ['a', 'b', 'c']
print('all items: %s' % items)
print('length is %d' % len(items))
print('first: %s' % items[0])
print('last: %s' % items[-1])
D:\>python hello.py
all items: ['a', 'b', 'c']
length is 3
first: a
last: c

使用append追加元素,insert插入到指定位置

>>> items = ['a', 'b', 'c']
>>> items.append('d')
>>> print(items)
['a', 'b', 'c', 'd']
>>> items.insert(1, 'x')
>>> print(items)
['a', 'x', 'b', 'c', 'd']

使用pop()取出末尾元素(将从列表中移除),pop(i)取指定位置的元素

>>> one = items.pop()
>>> one
'd'
>>> print(items)
['a', 'x', 'b', 'c']
>>> one = items.pop(1)
>>> one
'x'
>>> print(items)
['a', 'b', 'c']

list中的元素类型可以不同,甚至可以包含另一个list

>>> items = ['abc', 123, True]
>>> items
['abc', 123, True]
>>> items = ['a', ['b', 'c'], 'd']
>>> len(items)
3
>>> items[0]
'a'
>>> items[1][0]
'b'

list可以用+进行合并

>>> [1, 2, 3] + [3, 4, 5]
[1, 2, 3, 3, 4, 5]

list乘上一个数字可以返回一个重复n次的新列表

>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> 's' + 'o' * 5 + ' easy'
'sooooo easy'

判断一个元素是否在列表中

>>> items = ['a', 'b', 'c', 'hello']
>>> 'a' in items
True
>>> 'd' in items
False
>>> 'hello' in items
True
>>> 'or' in 'world'
True
  • tuple

Python中的另一种列表,和list相似,唯一不同的是tuple一旦初始化就不能改变,但可以用索引取值,tuple使用小括号()来包裹元素。下方例子给items赋值会报错

>>> items = ('a', 'b', 'c')
>>> items[0] = 'x'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

需要注意,若定义的tuple中只有一个元素,会有问题

>>> items = (1)
>>> items
1

items实际存的是数字1,而不是列表。所以要用逗号来消除歧义

>>> items = (1,)
>>> items
(1,)

另一个需要注意的是“可变”的tuple,看以下例子

>>> items = (1, [2, 3], 4)
>>> items[1][0] = 5
>>> items
(1, [5, 3], 4)

tuple的第二个元素是一个list,可以改变list的值,因为tuple的第二个元素实际指向的内存地址没有变

  • dict

dict顾名思义就是字典,存储的是key-value(键值对)

>>> ages = {'Tom': 28, 'Jack': 22, 'Amy': 25}
>>> ages['Jack']
22

如果key不存在会报错

>>> ages['Mike']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Mike'

为了防止出错可以判断key是否存在

>>> 'Mike' in ages
False

或者通过get()来取值,如果key不存在返回None,或者自己指定返回值

>>> ages.get('Mike')
>>> ages.get('Mike', 0)
0

和list一样,dict也有pop()方法

>>> a = ages.pop('Tom')
>>> a
28
>>> ages
{'Jack': 22, 'Amy': 25}

可以给指定的key赋新值,若key不存在则添加

>>> ages
{'Jack': 22, 'Amy': 25}
>>> ages['Jack'] = 33
>>> ages
{'Jack': 33, 'Amy': 25}
>>> ages['Lucy'] = 44
>>> ages
{'Jack': 33, 'Lucy': 44, 'Amy': 25}
>>>

dict中的元素是无序的

  • set

set和dict类似,但set只有key没有value,set中的key是不重复的

使用list来初始化一个set,重复元素会被过滤

>>> s = set([1, 2, 2, 3])
>>> s
{1, 2, 3}

由于set只有key,所以通过add()来添加元素,remove()来移除元素

>>> s = set([1, 2, 3])
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(1)
>>> s
{2, 3, 4}

另外,set可以做并集、交集操作

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 &s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

dict和set的key都只能是不可变对象

>>> a = {'a': 1, [2, 3]: 2}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a = {'a': 1, (2, 3): 2}
>>> a
{'a': 1, (2, 3): 2}
>>> a[(2, 3)]
2

---> Python学习笔记目录