前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门基础连载(2)数据结构

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

作者头像
企鹅号小编
发布2018-01-30 10:39:24
7550
发布2018-01-30 10:39:24
举报
文章被收录于专栏:编程

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

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

本文来自企鹅号 - 面包板社区媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 面包板社区媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档