Python数据结构包括了列表(list),元组(tuple),字典(dict)和集合(set),这些也都可以称之为容器,下面Cooldog就和大家一起学习一下这些容器:
- 列表(list)
list是处理一组有序项目的数据结构 ,即你可以在一个列表中存储一个序列的项目。列表中的项目应该包括在方括号中,一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是可变的 数据类型,即这种类型是可以被改变的。下面举例:
创建列表:
list1 = ['面包板', '论坛', 2017];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
打印(#后面是输出结果):
print "list1",list1 # list1 ['面包板', '论坛', 2017]
print "list2[0]:",list2[0]#list2[0]: 1
下面还介绍一些列表的简单操作,想知道list的更多方法在idle里面直接输入dir(list),即可打印出list相关方法。
append()添加一个元素(#后面为输出结果)
list1.append('bb')
print "list1",list1 #list1 ['面包板', '论坛', 2017,'bb']
extend()添加一个列表(#后面为输出结果)
list1.extend([123,123])
print "list1",list1 #list1 ['面包板', '论坛', 2017,'bb',123,123]
还有其它很多方法例如remove,pop等,各位亲们可以自己来测试下,就当练习了。这里和大家讲下列表的复制,举个例子大家自己体会下,复制和引用的区别。
list4=list2 #这个不是列表的复制
list5=list2[:] #这个是列表的复制
print list2 # [1, 2, 3, 4, 5 ]
print list4 # [1, 2, 3, 4, 5 ]
print list5 # [1, 2, 3, 4, 5 ]
list2.reverse() #把list2翻转下 测试一下复制和引用的区别
print list2 # [5,4,3,2,1]
print list4 # [5,4,3,2,1]
print list5 # [1, 2, 3, 4, 5 ]
看了上面的例子,大家可以自己测试下。
-元组(tuple)
元组(tuple)与列表(list)类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
创建如下:
tuple1=(1,2,3,4,5)
tuple2=('Jack','Tom','hello')
tuple3="a","b","c"
创建空元组:
tuple1=()
如果创建元组只包含一个元素,需要在元素后面添加逗号,例如:
tuple1=(1,)
#如果没有逗号可以试验一下,type后类型不是tuple哦!!
tuple2=(1) #type(tuple2) is int
元组索引,截取:
#后面是打印结果
tuple1 = (1,2,3,4,5,6) print "tuple1[0] is:",tuple[0] #tuple1[0] is:1
print "tuple1[1:3] is:",tuple[1:3] #tuple1[1:3] is:(2,3)
元组修改:
元组中的元素是不同修改的,元组没有类似列表apped等修改元素的方法,但是能通过拼接生成一个新的元组,如下:
#后是打印结果
tuple1 = (1,2,3,5,6)
tuple1= tuple1[0:3]+(4,)+tuple1[3:5]
print "tuple1:",tuple1 #tuple1:(1,2,3,4,5,6)
元组删除:
元组中的元素不能添加当然也不能删除,但是可以直接把整个元组删除:
tuple1 =()
del tuple1#此后如果print tuple1 那么就要报错了
元组和列表操作十分相似,但是也有区别,亲们要了解更多元组(tuple)的方法,可以在idle中键入help(tuple)或者dir(tuple)。
注意:任意无符号的对象,以逗号隔开,默认为元组,如下实例:
#后是打印结果
x,y=1,2
print "x is:",x#x is:1
print "y is:",y#y is 2
- 字典(dict)
在元组和列表中,都是通过编号进行元素的访问,但有的时候我们按名字进行数据甚至数据结构的访问,在c++中有map的概念,也就是映射,在python中也提供了内置的映射类型--字典。字典是Python语言中唯一的映射类型。映射其实就是一组key和value以及之间的映射函数,其特点是:key的唯一性、key与value的一对多的映射。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。
字典类型与序列类型的区别:
1.存取和访问数据的方式不同。
2.序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3.映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直4.接或间接地和存储数据值相关联。
5.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
6.映射类型用键直接“映射”到值。
字典是Python中最强大的数据类型之一
创建字典:
一般形式
#键与值用冒号":"分开
#项与项用逗号","分开
#字典中的键必须是唯一的,而值可以不唯一
dict1 = {}
dict2 =
其他形式
dict2 = dict(a=40,b='面包板')
dict3 = dict((['a',40],['b','面包板'])) #注意括号的数量
访问,修改,添加,删除字典中的值:
访问:
#后面是打印的值
dict2 = dict(a=40,b='面包板')
print dict2['a'] #40
修改:
#后面是打印的值
dict2 = dict(a=40,b='面包板')
dict2['b']='面包板社区'
print dict2['b'] #面包板社区
添加:
#后面是打印的值
dict2 = dict(a=40,b='面包板')
dict2['c']='PCB'
print dict2 #{'a':40,'b':'面包板','c':'PCB'}
删除:
#后面是打印的值
dict2 ={' a':40,'b':'面包板','c':'PCB'}
del dict2['b'] #删除键值为‘b’的字典中的value
print dict2 #
dict2.pop('a') #删除键值为‘a’的字典中的value并返回
print dict2 #{'c':'PCB'}
字典的方法:
字典包含了删除,获取等一系列的方法,这里不再赘述,当然不赘述是希望亲们自己去测试,实验,方法在idle中键入help(dict)或者dir(dict)。
字典的遍历
遍历字典的key(键值):
for key in adict.keys():print key
遍历字典的value(值):
for value in adict.values(): print value
遍历字典的项(元素)
for item in adict.items():print item
遍历字典的key-value
for item,value in adict.items(): print ‘key=%s, value=%s' %(item, value) 或 for item,value in adict.iteritems(): print ‘key=%s, value=%s' %(item, value)
- 集合(set)
python的set和其他语言类似, 是一个 无序、不重复、元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算。作为一个无序的集合,所以set不记录元素的位置或者插入点,因此set不支持indexing等操作。作为不重复元素集,用set来出去海量元素中的重复元素是个不错的选择,下面我们来简单介绍下set的相关的知识。
创建集合(set):
#后面是打印结果
a =
b = set('abcd')
c = set({'a':1,'b':2})
d = set(['a','b','c','d']) print(a) #set([1, 2, 3, 4, 5])
print(b) #set(['a', 'c', 'b', 'd'])
print(c) #set(['a', 'b'])
print(d) #set(['a', 'c', 'b', 'd'])
集合(set)基本操作:
#后面是打印结果
a = set('aabbccdd')
b = set('bdef') print(a) #set(['a', 'c', 'b', 'd'])把重复的去除了#交&
a&b set(['b', 'd'])#并
abset(['a', 'c', 'b', 'e', 'd', 'f'])#差a-b
a-bset(['a', 'c'])#差b-a
b-aset(['e', 'f'])#对称差:a和b的交集减去并集 a^b
a^bset(['a', 'c', 'e', 'f'])
集合(set)函数操作:
集合(set)函数方法,可以通过help(set)或者dir(set)来查看,这里稍微举例几个,其他请亲们自己去做做实验哟
# 后面是打印结果
a = set('abcd')
b = set('bdef')# 添加
a.add('x') print(a)set(['a', 'x', 'c', 'b', 'd'])#删除元素
a.remove('x') print(a)set(['a', 'c', 'b', 'd'])#返回set的长的
len(a)
4 #返回4#返回一个新的set包含a和b中的每一个元素
a.intersection(b)set(['b', 'd'])#测试是否 a中的每一个元素都在b中
a.issuperset(b)
False
至此,数据类型Cooldog已经给大家介绍完了,这里只是一些简单的入门基础,深入的应用还要大家自己去探索。
来源:面包板社区
原帖地址:https://forum.mianbaoban.cn/t/python-cool-python/57556
识别下方二维码,关注面包板社区!
领取专属 10元无门槛券
私享最新 技术干货