首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门基础连载(2)数据结构

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

识别下方二维码,关注面包板社区!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171223G07MBX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券