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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小詹同学

Leetcode打卡 | No.014 最长公共前缀

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

932
来自专栏Java爬坑系列

【Java入门提高篇】Day14 Java中的泛型初探

  泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解:   1.什么是泛型。   2.如何使用泛型。   3.泛型的好处...

3246
来自专栏程序员的知识天地

Python里面这些点,据说80%的新手都会一脸懵逼

Python虽然语法简单,通俗易懂,但是再简单它也是一门语言,就像一棵大树,总有一些树枝是弯弯绕绕的,让新手看完之后一脸懵逼,今天我们就来说说这几个点,反正我学...

723
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 三、函数

3217
来自专栏Python入门

十年Python大牛花了三天总结出来的python基础知识实例,超详细!

6、变量在内存中是通过引用计数来跟踪管理的~想要一起学习Python的可以加裙227-435-450,裙内有各种资料满足大家,欢迎加裙

3291
来自专栏思考的代码世界

Python编程从入门到实践之使用字典|第6天

一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含 大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,...

3567
来自专栏chenjx85的技术专栏

leetcode-91-解码方法(动态规划和递归两种解法)

1、这道题给定一个字符串,字符串中只含有数字,数字1可以解码为A,数字2可以解码为B……数字26可以解码为Z。

2664
来自专栏MyBlog

Effective.Java 读书笔记(8)关于equals方法

重写equals看上去十分简单对吧,但是我觉得很多时候重写equals可能会招致一些问题,这些问题有时可能会特别严重,当然了不重写不就完事了吗?但是这只适用于那...

794
来自专栏python学习之旅

Python笔记(七):字典、类、属性、对象实例、继承

(一)  简单说明    字典是Python的内置数据结构,将数据与键关联(例如:姓名:张三,姓名是键,张三就是数据)。例如:下面这个就是一个字典 {'姓名':...

3825
来自专栏coding for love

JS入门难点解析9-闭包的深入解析

(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)

622

扫码关注云+社区