您的位置:首页 > 编程语言 > Python开发

python之元组字典及set类型

2017-08-14 16:34 190 查看

python之元组

tuple:元组

本质:是一种有序集合

特点:1.和列表非常相似

2.一点初始化,就不能修改

3.使用小括号

1.创建tuple

格式:元组名 = (元组元素1,元组元素2,……元组元素n)

tuple1 = ()  #创建空元组
tuple2 = (1,2,3,"goog",True)  #创建有元素的元组,元组中元素的类型可以不同
print(tuple1)
print(tuple2)
------------------------------
output:()
(1,2,3,"goog",True)


2.定义只有一个元素的元组

定义一个元素的元组一定要加逗号,来标志是一个元组而非其他数据类型

tuple3 = (1,)
tuple4 = (1)
print (tuple3)
print (tuple4)
ptint(type(tuple3))
ptint(type(tuple4))
-----------------------
output: (1,)
(1)
<class 'typle'>
<class 'int'>


3.元组元素访问:

格式:元组名[下标] 下标超出范围(越界)会报错

tuple = (1,2,3,4,5)
print(tuple[0])
print(tuple[-1])
----------------------------
output: 1
5


4.修改元组

元组是无法修改的

tuple5 = (1,2,3,4,5)
tuple5[0] = 100
print(tuple[0])
-----------------------
output:报错
元组不可变


虽然元组不可变,但元组里的list可变,故实际上是元组的地址不可变。但地址指向的内容是可以变得

tuple5 = (1,2,3,4,5,[6,7,8])
tuple5[-1][0] = 100
print(tuple)
-----------------------
output:(1,2,3,4,5,[100,7,8])


5.删除元组:

将元组整个删除

tuple6 = (1,2,3)
del tuple6


6.元组的操作

t7 = (1,2,3)
t8 = (4,5,6)
print(t7 + t8)
print(t7,t8)
---------------------
output:(1,2,3,4,5,6)
(1,2,3),(4,5,6)


7.元组重复:

t10 = (1,2,3)
print(t10 * 3)
----------------------
output:(1,2,3,1,2,3,1,2,3)


8.元素是否在元组里

t11 = (1,2,3)
print(4 in t11)
-----------------------
output:flase


9.元素截取:

格式:元素名[开始下标:结束下标]

从开始下标快开始截取,截取到结束下标截取之前。

t12 = (1,2,3,4,5,6,7,8,9)
0,1,2,3,4,5,6,7,8
print(t12[3:7])
-------------------
output:(4,5,6,7)


10.二维元组

t13 = ((1,2,3),(4,5,6),……,())
print(t13[1][1])
-------------------------
output:5


11.元组的方法:

t14 = (1,2,3,4,5)
len():返回元组中元素的个数
print(len(t14))
max():返回元组的最大值
min():返回元组的最小值
print(max((5,6,7,8,9)))
print(min((5,6,7,8,9)))
------------------------
output: 5
9
5


12.列表转换为元组

list = [1,2,3]
t15 = tuple(list)
print(t15)
-----------------------
output:(1,2,3)


python之字典

概述:使用键值(key-value)存储,具有极快的查找速度,但字典是无序的。一个字典里可能有多个键值对

key的特征:

1.字典中的key必须唯一

2.key必须是不可变得对象

3.字符串、整数等都是不可变得,可以作为key

4.list是可变的,不能作为key

1.创建字典:

dict1 = {“tom”:60,”lilei”:70}

2.元素的访问:

获取:

1)获取value值:格式:字典名[key]

2)判断key的是否存在:格式:dict.get(key)

dict1 = {"tom":60,"lilei":70}
print(dict1["lilei"])
ret = dict1.get("tom")
if ret == None:
print("没有")
else:
print("有")
输出:
70
有


2.添加:

格式:dict[key] = value(key不存在字典里)

修改:dict[key] = value(key存在字典里)

因为一个key对应一个value,所以多次对一个key的value赋值,其实就是修改值

dict1 = {"tom":60,"lilei":70}
dict1["hanmeimei"] = 99   #创建
dict1["lilie"] = 80       #修改
print(dict1)
输出:
{'tom': 60, 'lilei': 70, 'hanmeimei': 99, 'lilie': 80}


3.删除:

格式:dict.pop(key)

dict1 = {"tom":60,"lilei":70}
print(dict1.pop("tom"))
print(dict1)
输出:
60
{'lilei': 70}


4.遍历:

dict1 = {"tom":60,"lilei":70}
for key in dict1:
print(key,dict1[key])
输出:
tom 60
lilei 70

for volue in dict1.values():
print(volue)
输出:
60
70

for k,v in<
4000
/span> dict1.items():
print(k,v)
输出:
tom 60
lilei 70

for i,v2 in enumerate(dict1):
print(i,v2)
输出:
0 tom
1 lilei


和list比较:

1.查找和插入的速度极快,不会随着key-value的增加而变慢。

2.需要占大量的内存,内存浪费多

list

1.查找和插入的速度会随着数据的真多而减慢

2.占用的空间少,浪费内存小

查询某个单词出现的次数:

word = input("请输入查询单词:")
dict = {}
str = "So STR, which I just typed up there, takes in parens, some input, and it converts it into a string, so that now I can use that John where I was expecting a string. John "
list = str.split(" ")#将其转换为列表
for v in list:
num = dict.get(v)
if num == None:
dict[v] = 1
else:
dict[v] += 1
print(dict[word])


逻辑:

1.以空格切割字符串

2.循环处理列表中的每个元素

3.以元素当做key去字典中提取数据

4.如果没有提取到,就以该元素作为key,1作为value存在字典里,

5.如果没提取到,将对应的key的value修改,值加1

6.根据输入字符串当做key再去字典取值

python之set

set:类似dict,是一组key的集合,不存储value

本质:无序无重复元素的集合,重复元素在set中自动过滤

1.创建

创建set需要一个list或者tuple或者dict作为输入集合

格式:set()

s1 = set([1,2,3,4,5])
s2 = set([1,2,3,4,5,1,2,3,4,5])
# s2=set((1,2,3,4,5,1,2,3,4,5))
s3 = set({1:"good",2:"nice"})
print(s1)
print(s2)
print(s3)
---------------------------------
out:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}   #去重作用
{1, 2}  #set是无序的而且无法存储value


2.添加:

格式:set.add(a)

s4 = set([1,2,3,4,5])
s4.add(6)   #out:{1, 2, 3, 4, 5, 6}
s4.add(3)   #out:{1, 2, 3, 4, 5, 6}
#可以添加重复的,不会报错,但也不会有效果
s4.add([7,8,9])#报错,列表可变,故set的元素不能是列表
s4.add((7,8,9))
s4.add({1:"a"})#报错,字典可变,故set的元素不能是字典


3.插入整个list/tuple/str,打碎插入

格式:set.update(list/tuple/str)

s5 = set([1,2,3,4,5])
s5.update([6,7,8])
s5.update((9,10))
s5.update("tom")
print(s5)
--------------------------------
out:    {1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 't', 'o', 'm'}


4.删除:

格式:set.remove(a)

s6 = set([1,2,3,4,5])
s6.remove(3)
print(s6)
---------------------
out: {1, 2, 4, 5}


5.遍历:

set没有索引的

print(set[3])###会报错!!!!

s7 = set([1,2,3,4,5])
for i in s7:
print(i)
---------------------------
out:1
2
3
4
5


6.交并集

1)交集

格式:set1&set2

s8 = set([1,2,3])
s9 = set([2,3,4])
a1 = s8 & s9
print(a1)
print(type(a1))
--------------------
out:{2, 3}
<class 'set'>


2)并集

格式:set1 | set2

a2 = s8 | s9
print(a2)
print(type(a2))
---------------------
out:{1, 2, 3, 4}
<class 'set'>


7.类型转换:

#list->set
l1 = [1,2,3,4,5,3,4,5]
s1 = set(l1)

#tuple->set
t2 = (1,2,3,4,3,2)
s2 = set(t2)

#set->list
s3 = {1,2,3,4}
l3 = list(s3)

#set->tuple
s4 = {2,3,4,5}
t4 = tuple(s4)


8.set常用于去重

list去重:list(set(list))

l = [1,5,2,4,3,4,5,6]
l = list(set(l))
print(l)
--------------------------
out:[1, 2, 3, 4, 5, 6]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐