序列是一种可迭代的,元素有序、可以重复出现的数据结构。
可迭代(iterable),记住这个词和英语单词,很重要。python出错一看到这个单词你就知道错在哪了。可迭代是指它的成员能返回一次的对象。
序列包括:列表、字符串、元组、范围(range)和字节序列(bytes)。假设这里有个序列
a = ‘hello’
对序列可以进行以下操作:
元组是一种不可变序列(重点)。以下方式都创建了元组
a=1,2,3,4
a=(1,2,3,4)
a=tuple([1,2,3,4]) # 列表转换成元组
a=(1,) # 注意,一个元素时必须有逗号,没逗号就是int了
a=() # 空元组
通过索引访问,也可以切片
这里重点是拆包,灵活应用拆包,可以将一些复杂的工作简单化
>>> a = ('张三','男','35岁')
>>> name, gender, age = a # 将a的值一一对应拆包成三个变量
>>> name
'张三'
>>> gender
'男'
>>> age
'35岁'
列表是一种可变序列,可追加、插入、删除和替换列表中的元素
以下方式都创建了列表
a=[]
a=[1,2,3]
a=list((1,2,3))
追加单个元素,用append(),如追加列表,可用"+"或extend()
>>> a = ['a','b']
>>> a.append('c')
>>> a
['a', 'b', 'c']
>>> a + ['123']
['a', 'b', 'c', '123']
>>> a.extend('123') # 这里要注意,extend()如果是字符串,要加中括号
>>> a
['a', 'b', 'c', '1', '2', '3']
>>> a.extend(['123'])
>>> a
['a', 'b', 'c', '1', '2', '3', '123']
>>>
insert(i,x):在索引 i 处插入元素x
>>> a = [1,2,3]
>>> a.insert(1,0)
>>> a
[1, 0, 2, 3]
将索引元素替换
>>> a=[1,2,3]
>>> a[-1]=0
>>> a
[1, 2, 0]
>>>
remove()和pop()
list.remove(x)在列表里从左到右找到第一个x并删除,如果找不到会抛出错误
list.pop(i) 删除索引为 i 的元素,并返回,省略 i 时默认删除最后一个元素
可以用dir(list)查看其他方法
sort():列表里的元素排序
reverse(): 将列表反过来
copy():复制列表
clear(): 清空列表
count(x): 返回x在列表里出现的次数
很有用的特殊表达式,看大神的代码,好多都是这种,还带嵌套的,让人看晕。
>>> print([x**2 for x in range(10) if x%2 ==0])
[0, 4, 16, 36, 64]
集合是可迭代的,无序的,元素**不重复 **的数据结构。
注意,创建空白集合不能 a = {},因为这是创建字典
a = set()
a = {1,2,3}
a = set('aab') ⇒ 输出的是 {'a','b'}
a = set([1,2,2]) ==> 输出的是{1,2}
add(x):添加元素 x
remove(x):删除元素 x, 如果不存在则抛错
discard(x):同上,如果不存在不会抛错
pop():这里要注意,如果集合里有字符串,则随机删除并返回,如果都是数字,则默认从第一个开始删除
集合可以用for遍历
用 frozenset(),创建不可变的集合,集合不可修改。不知道在什么情况下应用?
跟列表推导式一样,好处在于由于集合的特性,输出结果不会有重复
{key:value}
使用dict()创建字典时需要注意括号里只能放一个参数
d = {1:'Jack',2:'Tom'}
d=dict({1:'Jack',2:'Tom'})
d=dict([(1,'Jack'),(2,'Tom')])
d=dict(s1='Jack',s2='Tom') # 用key=value的方式创建,key 只能用字母带头的字符串,'100','s100',100,这样的都不被允许
dict[key] = newvalue # 通过键来改值
del dict[key] # 删除key和所对应的值
dict.pop(key) # 删除key和所对应的值并返回其值,省略key默认最后
dict.get(key) # 得到key的值
dict.items() # 得到所有key,value
dict.keys() # 得到所有key
dict.values() # 得到所有值
遍历字典,实际上对dict.keys(),dict.values(),dict.items()来遍历
{k:v for k,v in dict.items() if v%2==0}