Python学习笔记---切片 列表 元祖 字典 集合

列表[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]
>>>

Python学习笔记---切片 列表  元祖 字典 集合

序列的通用操作方法:

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
>>>

集合

set 可变集合,set里可以传列表 字典 字符串 集合
frozenset 不可变集合

定义:s={}

>>> s=set([1,2,3,2,1,2])
>>> 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=set({1,2,3,2,3,4})
>>> s
{1, 2, 3, 4}
>>>
 
 
#set是无序的  添加的内容不固定顺序  不一定加在哪个位置
>>> s.add("fgh")#add把内容当做一个字符串来添加
>>> s
{1, 2, 3, 4, 'fgh'}
>>> s.update("fgh")#update把内容拆开添加
>>> s
{1, 2, 3, 4, 'h', 'g', 'f', 'fgh'}
>>>
>>> s
{'l', 'o', 'e'}
>>> s.remove("e")
>>> s
{'l', 'o'}
>>>
>>> s.discard("o")#删除
>>> s
{'l'}
>>> s.pop()#返回并删除
'l'
>>> s
set()
>>>
 
 
#集合可以len求长度  copy复制   clear清空
>>> s=set("hello")
>>> 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()
>>>
 
 
 
#遍历(set不能按位置遍历)
>>> for i in s:
...     print(i)
...
h
fgh
a
g
c
f
 
>>> for id,value in enumerate(s):
...     print(id,value)
...
0 h
1 fgh
2 a
3 g
4 c
5 f
 
 
#set可以跟list和tuple互转
>>> s
{'l', 'o'}
>>> list(s)
['l', 'o']
>>> tuple(s)
('l', 'o')
>>> set(s)
{'l', 'o'}
>>>
 
 
 
#求集合
>>> s1
{'l', 'h', 'o'}
>>> s=set("ho")
>>> s
{'h', 'o'}
>>> s1&s#&交集
{'h', 'o'}
>>> s1 |s#|并集
{'h', 'l', 'o'}
>>> s1-s#-差集
{'l'}
>>> 
 
 
 
 用集合实现第一题:
>>> import random
>>> 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}
>>>

 
 
 
集合大于  等于  比的是个数
>>> {1}>{1}
False
>>> {1}=={1}
True
>>> {1,2}>{1}
True
>>> {1,2}>{1}
 
 
包含和不包含
>>> {2,3,4}>{5}
False
>>> {2,3,4}>{2}
True
 
 
超集  子集   完全相等集合 函数
>>> {2}.issubset({1,2,3})#子集
True
>>> {2}.issuperset({1,2,3})#包含
False
>>> {1,2,3,4}.issuperset({1,2,3})
True
 
 
in ,not in 判断在不在
>>> 1 in {1,2,3}
True
>>> 22 not in {1,2,3}
True
 
 
 
不可变集合
不可变集合,除了内容不能更改外,其他功能及操作跟可变集合set一样
a=frozenset([1,2,3])
a.pop()
 
>>> a=frozenset([1,2,3])
>>> a.pop() #当改变不可变集合里面的内容时,会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'pop'
>>>
上一篇:MyEclipse 的智能提示设置 使开发写代码的速度更快


下一篇:[ios2]ios系统中各种设置项的url链接