列表[1,2,3,2]#[]
元祖(1,2,3,2)#()
字典{1:2,3:2}#{}
集合{1,2,3,2}#{}
1,集合与列表的区别,集合里不能有重复元素
2.字典与集合的区别,都是用花括号表示,但是字典是一个key对应一个values
s=[1,2,3,4,5]
print(s[2])#下标是从0开始
print(s[-1])#倒取
用range获取一个list操作
list(range(10))
例:取出这个list(range(11))的中间数
a=list(range(10)]#将这个list存到一个变量里 len(a)#获取到这个列表的长度 len(a)/2 len(a)//2#向上取整 a[len(a)//2]
切片
切片 [start,end,step]开始值 结束值 步长
>>> s=list(range(11))#生成一个列表
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[1:3]#1.切片用冒号,2.右边为开区间,只能取到1,2
[1, 2]
>>> s[0:5]#步长不写默认为1
[0, 1, 2, 3, 4]
>>> s[2:]#end值不写默认为取到最后一位
[2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> s[2:9:2]
[2, 4, 6, 8]
倒取
>>> s[-1:-8:-2]
[10, 8, 6, 4]
字符串切片
例:取出roadoo
>>> s="gloryroad is good!"
>>> s[5:10]
'road '
>>> s[-3:-5:-1]
'oo'
>>> result=s[5:10]+s[-3:-5:-1]#拼接用+
>>> result
'road oo'
>>> s[5:20]#切片越界也不报错
'road is good!'
列表
列表 顺序是固定的 列表/元祖/字符串
定义:a = []
1.查
1.1遍历:按下标遍历
>>> a=[1,3,(4,5),"road",{1:1},4.55,True]
>>> a
[1, 3, (4, 5), 'road', {1: 1}, 4.55, True]
>>> a[0]
1
>>> a[2]
(4, 5)
>>> for i in range(len(a)):
... print(a[i],end=" ")
...
1 3 (4, 5) road {1: 1} 4.55 True >>>
>>>
1.2按值遍历
>>> for i in a:
... print(i)
...
1
3
(4, 5)
road
{1: 1}
4.55
True
>>>
1.3切片查
>>> a
[1, 3, (4, 5), 'road', {1: 1}, 4.55, True]
>>> a[1:2]
[3]
>>> a[1:]#从下标为1的元素开始取
[3, (4, 5), 'road', {1: 1}, 4.55, True]
>>> a[:3]#从开始取到下标3,但不包含下标未3的元素
[1, 3, (4, 5)]
>>> a[:]#全取
[1, 3, (4, 5), 'road', {1: 1}, 4.55, True]
>>> a[::2]#隔离=2个步长取
[1, (4, 5), {1: 1}, True]
>>> a[::-1]#从最后一个元素开始取
[True, 4.55, {1: 1}, 'road', (4, 5), 3, 1]
2.增
append:在列表的末尾添加元素
insert:在指定的位置添加元素
extend:将可迭代对象指定的元素展开放到原列表中
>>> a =[1,2,3,4,5]
>>> a.append(10)
>>> a
[1, 2, 3, 4, 5, 10]
>>> a.insert(2,25)
>>> a
[1, 2, 25, 3, 4, 5, 10]
>>> b =[0,12]
>>> a.extend(b)
>>> a
[1, 2, 25, 3, 4, 5, 10, 0, 12]
>>>
3.删
del a[] 按下标删
remove() 删除指定的元素
pop(index) 弹出删 默认删除最后一个元素,而且会将删除的元素返回,填写下标后按下标删
clear() 清空列表
>>> del a[0]
>>> a
[3, (4, 5), 'road', {1: 1}, 4.55, True]
>>> a.remove(True)
>>> a
[3, (4, 5), 'road', {1: 1}, 4.55]
>>> a.pop(0)
3
>>> a
[(4, 5), 'road', {1: 1}, 4.55]
>>> a.clear()
>>> a
[]
>>>
4.改
>>> a=[1,2,3,4,5]
>>> a[0]='a'#重新按下标赋值
>>> a
['a', 2, 3, 4, 5]
>>>
count:统计某个元素在列表里出现的次数
index:查看某个元素在列表中第一次出现的位置
>>> a=[1,2,1,2,3,3,3,3]
>>> a.count(2)
2
>>> a.count(3)
4
>>> a.index(2)
1
>>> a.index(3)
4
>>>
list的排序:
s.sort()正序,原地排序,(什么叫原地?原地排序没有返回值)
s.reverse()翻转
>>> s=[1,2,3,4,5,6]
>>> s.sort()
>>> s
[1, 2, 3, 4, 5, 6]
>>> s.reverse()
>>> s
[6, 5, 4, 3, 2, 1]
>>>
目前我们有三种方法来倒序遍历一个List:
1 . for x in reversed(array):
print x
2. for x in range(len(array)-1,-1,-1):
print array[x]
3. for x in array[::-1]:
print x
多种方式复制列表:
a[:], list(a), a*1, copy.copy(a)四种方式复制列表结果都可以得到一个新的列表
1.a[:]
>>> a=[1,3,5,7,9]
>>> b =a[:]
>>> b
[1, 3, 5, 7, 9]
2.list(a)
>>> c =list(a)
>>> c
[1, 3, 5, 7, 9]
3.a*3
>>> d =a *3
>>> d
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9, 1, 3, 5, 7, 9]
4.copy.copy(a)
>>> e =copy.copy(a)
>>> e
[1, 3, 5, 7, 9]
>>>
序列的通用操作方法:
len 求列表元素的长度
+ 拼接
* 复制
max 最大值
min 最小值
>>> a=[1,2,1,2,3,3,3,3]
>>> len(a)
8
>>> b =[2,4,6,8]
>>> a+b
[1, 2, 1, 2, 3, 3, 3, 3, 2, 4, 6, 8]
>>> b*3
[2, 4, 6, 8, 2, 4, 6, 8, 2, 4, 6, 8]
>>> max(b)
8
>>> min(b)
2
>>>
元祖
元祖tuple 元祖不能改 只能读取 元祖里面存列表/字典(可变类型对象)是可以改变的
定义:a=()
>>> type(a)#查看类型
<class 'tuple'>
>>> isinstance(a,tuple)#判断是否为元祖
True
>>> a=1,2#不加括号也可自动转化为元祖
>>> type(a)
<class 'tuple'>
>>> a=(1)#只有一个元素是int类型
>>> type(a)
<class 'int'>
>>> a=(1,)#只放一个元素的元祖必须加逗号
1. 查
例:元祖取值
>>> a=(1,2,[4,5,6])
>>> a
(1, 2, [4, 5, 6])
>>> a[2][0]#嵌套取值
4
>>>
遍历元祖
按值遍历
>>> for i in a:
... print(i)
...
1
2
[4, 5, 6]
>>>
按坐标遍历
>>> a=(1, 2, [3, 4, 5, 6])
>>> for i in range(len(a)):
... print(a[i],end=' ')
...
1 2 [3, 4, 5, 6]
>>>
2.增 只能改变元祖内可变对象的值
>>> a=(1,2,[3,4,5])
>>> a[2].append(6)
>>> a
(1, 2, [3, 4, 5, 6])
>>> a.append(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
字典
定义:d={}
>>> type(d)
<class 'dict'>
>>> isinstance(d,dict)
True
>>> d[1]="abc"#增 key 和value key为不可变类型
>>> d
{1: 'abc'}
>>> d[1]=66#key相同时原来的值会被覆盖掉
>>> d
{1: 66, (1, 2): 5}
>>>
>>> d=dict(a=1,b=2)#另一种方式生成字典
>>> d
{'a': 1, 'b': 2}
>>>
>>> for i in d:#遍历key的两种方式
... print(i)
...
a
b
>>> for i in d.keys():#遍历key的两种方式
... print(i)
...
a
b
>>>
>>> for i in d.values():#遍历values
... print(i)
...
1
2
>>>
>>> for k,v in d.items():#同时遍历key和values
... print(k,":",v)
...
a : 1
b : 2
>>>
集合
定义:s={}
>>> s
{1, 2, 3}
>>> s={4,5,6}
>>> type(s)
<class 'set'>
>>> s=set({1:2,3:4})
>>> s
{1, 3}
>>> s
{1, 3}
>>> s=set("abcabc")
>>> s
{'a', 'c', 'b'}
>>>
>>> s
{1, 2, 3, 4}
>>>
>>> s
{1, 2, 3, 4, 'fgh'}
>>> s.update("fgh")#update把内容拆开添加
>>> s
{1, 2, 3, 4, 'h', 'g', 'f', 'fgh'}
>>>
{'l', 'o', 'e'}
>>> s.remove("e")
>>> s
{'l', 'o'}
>>>
>>> s
{'l'}
>>> s.pop()#返回并删除
'l'
>>> s
set()
>>>
>>> s
{'l', 'h', 'o', 'e'}
>>> len(s)
4
>>> s1=s.copy()#操作copy的内容两个集合互不影响
>>> s1
{'l', 'h', 'o', 'e'}
>>> s
{'l', 'h', 'o', 'e'}
>>> s1.remove("e")
>>> s1
{'l', 'h', 'o'}
>>> s
{'l', 'h', 'o', 'e'}
>>> s.clear()
>>> s
set()
>>>
... print(i)
...
h
fgh
a
g
c
f
... print(id,value)
...
0 h
1 fgh
2 a
3 g
4 c
5 f
{'l', 'o'}
>>> list(s)
['l', 'o']
>>> tuple(s)
('l', 'o')
>>> set(s)
{'l', 'o'}
>>>
{'l', 'h', 'o'}
>>> s=set("ho")
>>> s
{'h', 'o'}
>>> s1&s#&交集
{'h', 'o'}
>>> s1 |s#|并集
{'h', 'l', 'o'}
>>> s1-s#-差集
{'l'}
>>>
>>> a= list(range(1,101))
>>> a=set(a)
>>> rand_num =random.randint(0,99)
>>> rand_num
44
>>> b=list(range(1,101))[:rand_num]+list(range(1,101)[rand_num+1:])
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
>>> len(b)
99
>>> s={1,2,3}
>>> s1={3,4,5}
>>> s.difference(s1)#差集函数,差集是有方向的
{1, 2}
>>> s1.difference(s)
{4, 5}
>>> s.intersection(s1)#交集
{3}
>>> s.union(s1)#并集
{1, 2, 3, 4, 5}
>>>
False
>>> {1}=={1}
True
>>> {1,2}>{1}
True
>>> {1,2}>{1}
False
True
True
>>> {2}.issuperset({1,2,3})#包含
False
>>> {1,2,3,4}.issuperset({1,2,3})
True
True
>>> 22 not in {1,2,3}
True