本文所列举的所有的关于Python的知识中都是基于Pyhon3的,本人作为一个初学者也是通过这个
自己来学习Python,如有错误,欢迎各位指正。
在java开发中我们会用到各种集合比较常用的有List和Map,用于
初始化原始数据或者作为数据源传入一个方法中,在Python中
主要有集合或者说列表list[],dict{},set{},tuple()这几种,本人将逐一列举之:
列表(list),元组(tuple),字典(dict)和集合(set)
1:首先是list,list是一种有序集合,可以随时添加和删除其中的元素,元素可以是不同的数据类型,
也可以是一个list,这个很神奇,比如像这种:(Python字符串可以用''也可以用"")
以下这种list都是没问题的
kk=["action1","action2","action3","action4","action5"]
kk2=[12,"action2",13,"action4",[12,'13213']]
#打印这个list集合
print(kk)
#得到集合的元素个数
print(len(kk))
#用索引的方式拿到集合的每个元素
print(kk[0],kk[1],kk[2],kk[3],kk[4])
#得到集合的最后一个颜色值
print(kk[-1])
#在集合后边追加一个元素
kk.append("我是后来增加的")
print(kk)
#在某个位置添加一个元素
kk.insert(3,"在第四个位置加一个鬼东西")
print(kk)
#将list调转过来
kk.reverse()
print(kk)
#删除某个位置的元素pop(index) 删除最后一个元素pop()或者pop(-1)
kk.pop()
print(kk)
#替换某个位置的元素
kk[1]="我替换了这个位置的一个元素"
print(kk)
基本方法一栏
******************************************************************************************
L.append(var) #追加元素
L.insert(index,var) #插入元素
L.pop(var) #返回最后一个元素,并从list中删除之
L.remove(var) #删除第一次出现的该元素
L.count(var) #该元素在列表中出现的个数
L.index(var) #该元素的位置,无则抛异常
L.extend(list6) #追加list6,即合并list到L上,这里注意,使用extend函数可以一次在一个列表中插入任意多个值,而不必须每次只使用append()一次一值的插入
L.sort() #排序
L.reverse() #倒序
del L[1] #删除指定下标的元素
del L[1:3] #删除指定下标范围的元素
#复制list:
L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。
L1 = L[:] #L1为L的克隆,即另一个拷贝。
***********************************************************************************************
2:第二种:dict字典{}
#Python 内置了字典:dict 的支持,dict 全称 dictionary,在其他语言中也
#称为 map,使用键-值(key-value)存储,具有极快的查找速度
#dict 的 key 必须是不可变对象。比如整数 字符串 不能是list
#dict是无序的
#map的键值可以是不同的类型
d={"one":"第一个","two":"第二个","three":13,"four":True,12:'键是整数值是字符串'}
print(d)#打印这个dict
#判断key值是否存在
if "three" in d:
print(d["three"])
# 通过 dict 提供的 get 方法,如果 key 不存在,可以返回 None,或者
# 自己指定的 value:
print(d.get("onee"))#返回None
print(d.get("one"))
print(d.get("onee",-1))#返回-1
#1. 查找和插入的速度极快,不会随着 key 的增加而增加;
#2. 需要占用大量的内存,内存浪费多
if "two" in d:
d["two"]="新来的第二个"
print(d)
d["new"]="新添加的元素"
d["boolean"]=False
print(d)
#删除某个键值
d.pop("boolean")
print(d)
#用整数作为键
d[144]="这是用整数来做键的"
print(d)
常用方法:
常用字典操作:
dic.clear()清空字典
dic.keys()获得键的列表
dic.values()获得值的列表
dic.copy()复制字典
dic.pop(k)删除键k
dic.get(k)获得键k的值
dic.update()更新成员,若成员不存在,相当于加入
dic.items()获得由键和值组成的列表
get()语法:
dict.get(key, default=None)
参数
key – 字典中要查找的键。
default – 如果指定键的值不存在时,返回该默认值值。
返回值
返回指定键的值,如果值不在字典中返回默认值None。
3:第三种set,{}
#是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.
#set和dict类似也是一组key的集合但不存储 value由于key不能重复,所以,在 set中没有重复的 key
#(set并不是有序的 )可以认为是一种有键无值的dict
#set和dict类似也是一组key的集合但不存储 value由于key不能重复,所以,在 set中没有重复的 key
#set并不是有序的 有键无值的dict 上文已经提到了,在这里重复一下
************************************************************************************************
#定义一个集合
set1 = {1, 2, 3, 4, 5}
# 或者使用 set 函数
list1 = [6, 7, 7, 8, 8, 9]
set2 = set(list1)#去掉重复内容而且是无序的
set2.add(10) # 添加新元素
print set2 # set([8, 9, 6, 7]) 去掉重复内容,而且是无序的
set3 = frozenset(list1) #固定集合
set3.add(10) # 固定集合不能添加元素
#方法(所有的集合方法):
s.issubset(t) #如果s是t的子集,返回True,否则返回False
s.issuperset(t) #如果s是t的超集,返回True,否则返回False
s.union(t) #返回一个新集合, 该集合是s和t的并集
s.intersection(t) #返回一个新集合, 该集合是s和t的交集
s.difference(t) #返回一个新集合, 该集合是s的成员, 但不是t的成员, 即返回s不同于t的元素
s.symmetric_defference(t) #返回所有s和t独有的(非共同拥有)元素集合
s.copy() #返回一个s的浅拷贝, 效率比工厂要好
#方法(仅适用于可变集合):以下方法参数必须是可哈希的
s.update(t) #用t中的元素 修改s,即s现在包含s或t的成员
s.intersection_update(t) #s中的成员是共同属于s和t的元素
s.difference_update(t) #s中的成员是属于s但不包含在t中的元素
s.symmetric_difference_update(t) #s中的成员更新为那些包含在s或t中,但不是s和t共有的元素
s.add(obj) #在集合s中添加对象obj
s.remove(obj) #从集合s中删除对象obj,如果obj不是集合s中的元素(obj not in s),将引发keyError错误
s.discard(obj) #如果obj是集合s中的元素,从集合s中删除对象obj
s.pop() #删除集合s中得任意一个对象,并返回它
s.clear() #删除集合s中的所有元素
## 集合有并集,交集,求差操作
## 并集:intersection() 方法返回一个新集合,包含在两个集合中同时出现的所有元素。a|b也可以
## 交集:union() 方法返回一个新集合,包含在两个 集合中出现的元素。a&b也可以
## 差集:difference() 方法返回的新集合中,包含所有在 集合A出现但未在集合B中的元素。
## symmetric_difference() 方法返回一个新集合,包含所有只在其中一个集合中出现的元素。
# 删除元素
set2.discard(6) # 当元素不存在时,不会引发异常
set2.remove(6) # 与discard的区别在于,如果没有要删除的元素,remove会引发一个异常
set2.pop() # 因为set是无序的,所以pop会随机的从set中删除一个元素
4:最后一种tuple(),tuple是一种不可变的有序列表,因为元素不可变,所以更安全。
#tuple是一种不可变的有序列表 因为元素不可变 所以更安全
kk=("ok",12,"boom")
print(kk)
#定义一个空集合
kk2 = ()
print(kk2)
#定义一个只有一个元素的集合、
#后面要加上一个逗号,这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。
#tuple2 = (123) #如果你这样定义你定义的将是123这个元素,而不是一个元组。
#python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。
比如:
kk3 = ('fj',)
print(kk3)
#定义一个可变的tuple 虽然tuple不可变 但是他的元素可以是一个可变的list
kk4 = ('ccv','nnm',['12','fh','nj'])
print(kk4)
kk4[2][0]='替换第三个元素中的第一个元素'
kk4[2][2]='替换第三个元素的最后一个元素'
print(kk4)
#替换可变元素
kk4[2][-1]='完全不知道发生了什么'
print(kk4)
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
t1 = ('wuyanl','luoting','aimeiyu')
t2 = (1,2,3,4,5,6,7,8,9,0)
t3 = t1 +t2
('wuyanl', 'luoting', 'aimeiyu', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
元组的内置函数:
1.比较两个元组元素:cmp(tuple1,tuple2)相等的话返回0,不相等返回1;
2.计算元组的长度:len(tuple
3.返回元组中的最大值最小值:max(tuple),min(tuple);
4.将列表转换成元组:Tuple = tuple(list)。
list,dict,set,tuple相互转换
以上就是python的四种列表,谢谢大家浏览