Python 的Lists、Tuples、Dictionaries和Sets

来源:互联网 发布:超级玛丽 跳跃算法 编辑:程序博客网 时间:2024/06/06 01:13

Lists和Tuples

相同点:

  • 都可以按顺序存储元素;
  • 可以存储不同类型的元素,即一个List中可以存储任何Python的对象;

不同点:

  • Lists的元素可以改变,Tuples中的元素不可以;
  • Tuples占的空间小

Lists

创建

  • 使用 [] 或者 list()
    a_list = []     a_list = list()    a_list = [a, b, c, d]
  • 使用 list() 从其它类型得到一个list
    list_from_string = list("fromstring")    some_tuple = "good", "better", "best"    list_from_tuple = list(some_tuple)

访问数据

  • 使用[offset]访问元素,offset从0开始计算为第一个元素,-1为最后一个元素
a_week = ["Monday","Tuseday","Wednesday","Thursday","Friday"]
  • 访问第一个元素和最后一个元素
a_week[0]a_week[-1]
  • 使用 slice[begin:end:steps]访问从bigin 到 end -1中间隔为steps的元素,默认begin为0,end为最后元素的offset,steps为1
first_three_days = a_week[0:3:1]last_three_days = a_week[-1:-4:-1]

添加元素

  • 使用append()或者+=在List末尾添加元素,注意append()把添加的元素当成一个整体,而+=则是将能分开的结构分开加入,如下代码实际上a_week+=("Sunday")添加了六个元素而并非”Sunday”这个元素
a_week.append("Saturday")a_week+=("Sunday")
  • 使用 insert(offset, element),在offset位置添加元素element
a_week.insert(5,"Saturday"

删除元素

  • 使用 del,del并非是List 的方法,而是相当于 = 的反向操作
del a_week[5]del a_week[-1:-5:-1]#删除后四个元素
  • 使用Lists方法 remove(value) value为元素的具体值
a_week.remove("Monday")#删除"Monday"
  • 使用 pop(offset) 删除offset上的元素,并获得该元素,offset默认为-1
a_day = a_week.pop(5)#取第六个元素并从List中删除

其它常用List操作

List自带方法

  • index(value) :返回具体元素的offset
  • count(value) :返回具体元素的的出现次数
  • sort() :对List按顺序重排,数字默认从小到大,字母则按字母表顺序,可使用reverse=ture参数改变排列顺序
  • sorted() :返回一个重排后的List,不改变原先的List
  • copy() :将List内容复制到新的List中,而 = 只是为List起新的名字,实际上都是同一个List
new_week = a_week.copy()#new_week为一个新的Listnew_name_to_list = a_week #没有创建新的List,只是多了个名字

通用方法

  • len() :获得List 的长度
  • in :判断object是否在List中
if "Monday" in a_week:    print("new week starts!")

Tuples

创建

  • 使用()
empty_tuple = ()#创建一个空Tupleweird_names = "Tony","Cindy","Apple","Passion","LOL"#创建非空Tuple的时候()不是必须的
  • 使用 tuple() 从其他类型得到
char_tuple = tuple("Fuji")days_tuple = tuple(a_week)

List和Tuple的unpacking:一次性使用多个元素

a,b,c,d = char_tuple #将Tuple中四个元素分别赋值个四个变量first,second,third,fourth = a_week[:4:1]#将前四个元素赋值给四个变量

Dictionaries

Dictionary是类似于List,但是Dictionary不用offset访问,而是用唯一的key访问对应的value,它的元素是key-value的一对值,key必须是不可变的Python对象,如boolean,integer,string,Tuple等。

创建

  • 使用 {}
empty_dict = {}#创建一个空Dictionarye2c_dict = {"love":"爱","you":"你"}
  • 使用 dict() 从其他类型创建Dictionary
couple = [["Mike","Amy"],["Tony","Lisa"]]couple_dict = dict(couple)

添加元素

  • 使用 [key] 对元素进行操作
couple["Henry"] = "Christina"#添加元素 "Henry":"Christina"couple["Mike"] = "Sucy" #改变元素值
  • 使用 update() 将其它Dictionary合并
other_cp = ["William":"Tylor","Tom":"Lily"]couple.update(other_cp) #将other_cp中的元素加入到couple中

删除元素

  • 使用 del 删除某个元素
del couple["Mike"]
  • 使用 clear() 删除全部元素
other_cp.clear()

其它常用Dictionary操作

Dictionary的方法

  • keys() :获得Dictionary中所有的key
  • values() :获得Dictionary中所有的value
  • items() : 获得Dictionary中所有的元素
list(couple.keys())list(couple.values())list(couple.items())#在Python3中上面三个方法返回的都不是List,而分别是#dict_keys(),dict_values(),dict_items(),#需要用List()函数,转换成List
  • copy() :和List的copy() 一样,实际上复制Dictionary中的元素而不是简单的换个名字

通用方法

  • in :判断一个key是否在一个Dictionary中

Sets

Sets也就是数学中的集合,它的元素具有唯一性和Dictionary中的key一样,即Sets中不会有重复的元素

创建

  • 使用 set()
empty_set = set()#creat an empty setchar_set = set("passion")#creat a set from a string#which only has one 's' though it appears twice in"passion"
  • 使用 {} 创建非空的set
fruits = {'apple','banana','pear','watermelon'}

set的基本操作

  • 求交集:&或者intersection()
others = {'apples','grape','lemon'}fruits_in_common = others & fruitsfruits_in_common = othters.intersection(fruits)
  • 求合集:| 或者union()
total_fruits = others | fruitstotal_fruits = others.union(fruits)
  • 求差集,即在集合a中而不再集合b中:- 或者difference()
fruits - othersfruits.difference(others)
  • 求对称差,即两集合的非公共部分:^ 或者 symmetric_diffrence()
others^fruitsothers.symmetric_difference(fruits)