码迷,mamicode.com
首页 > 编程语言 > 详细

python基础知识---数据结构

时间:2016-01-07 06:36:58      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:

一、python有很多内置数据结构,下面从不同角度将它们分类。

1、单值和集合

技术分享

单值类型的数据结构一旦生成就无法改变,如果没有被引用了,则被系统回收,如果想改变单值类型的数据结构,python的做法是生成新的数据结构。

单值类型的数据结构在内存中是连续存储的。

 

a=1
print(id(a))
#2006314800
a=2                   
print(id(a))       
#2006314832       #尝试改变数字a,发现开辟了新的内存空间

 

集合类型的数据结构是复合而成的,比如

 1 a=[1,2,string]
 2 #由数字和字符串组成的列表
 3 b=(1,string)
 4 #由数字和字符串组成的元组
 5 
 6 c=[[1,2,string],zhoufeng]
 7 #由列表和字符串组成的列表
 8 
 9 d={1:(1,string),2:(2,string)}
10 #由数字和元组组成的字典

 

2、按是否有序划分

技术分享

“有序”是一个很重要的特性,有很多操作围绕“有序”展开,下面列举常见内置数据结构的方法。

 

二、数据结构方法

补充:方法和函数的区别在于,方法是绑定了类实例(对象)的,因为一个数据结构也是一个对象,所以数据结构拥有方法,具体类的概念后面介绍。

1、数字操作


2、序列通用操作(适用于列表、元组、字符串)

索引
greeting=hello
numbers=[1,2,3,4,5,6,7,8,9,10]

print(greeting[0]) #索引从0开始

#h


print(greeting[-1]) #-1表示倒数第一个,这样比较好记忆
#o

分片
print(greeting[2:4])      #第1个索引是要提取的第1个元素的编号,第2个索引是分片后剩余部分的第1个元素的编号,简而言之,“顾前不顾后”
#11

print(numbers[-3:])    #取倒数3个元素
#[8, 9, 10]

print(numbers[:3])     #取前3个元素
#[1, 2, 3]

print(numbers[0:10:2])     #设置步长为2,步长可以是负数,表示从右到左提取元素

#[1, 3, 5, 7, 9]

序列加法
#两种相同类型的序列才能够相加
print(‘hello, ‘+‘world‘)        
#hello, world
print([1,2,3]+[4,5,6])
[1, 2, 3, 4, 5, 6]


序列乘法
print([1,2]*5)
#[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
print(‘hello‘*5)
hellohellohellohellohello


成员资格 #存在性检查
print(‘h‘ in ‘hello‘)
True
print(1 in [1,2,3])
True

print(‘zhou‘ in (‘zhou‘,‘feng‘))
True
max、min、len
print(max([1,2,3]))            #如果是数字序列,则是比较数值大小
print(max([‘zhou‘,‘feng‘,‘de‘]))    #如果是字符,则是比较ASCII大小

print(len([‘zhou‘,‘feng‘,‘de‘,‘shu‘]))    #返回序列中元素个数
#4

遍历(迭代)          #列表和元组按元素遍历,字符串按字符遍历
lst1=[‘item1‘,‘item2‘,‘item3‘,‘item4‘]
for i in lst1:
if i == ‘item2‘:
print(‘pass‘)
continue
if i == ‘item3‘:
print(‘found!‘)
break

#pass
#found!



3、列表操作
列表实质是一个链表,存储时不要求空间连续,这也是能够修改它的原因。
list函数         #将任意一个序列(列表、元组、字符串)变成列表
a=list("hello")
print(a)
#[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]

元素赋值

x=[1,1,1]

x[1]=2
print(x)
#[1, 2, 1]

删除元素
names=[‘alice‘,‘beth‘,‘cecil‘,‘dee-dee‘]
del names[2]
print(names)
#[‘alice‘, ‘beth‘, ‘dee-dee‘]

分片赋值
d=[1,2,3,4]
d[-2:]=[5,6]
print(d)
append    #在末尾追加新的对象注意是原地修改,没有生成修改后的副本
list1=[1,2]
list2=[3,4]
list1.append(list2)
print(list1)

#[1, 2, [3, 4]]
extend      #扩展,在列表末尾追加另一个序列的多个值,注意是原地修改,没有生成修改后的副本,这点是和序列加法不同的地方

list3=[1,2]
list4=[3,4]
list3.extend(list4)
print(list3)
#[1, 2, 3, 4]

index    #通过值取索引,和通过索引取值是相反的过程
list5=[‘we‘,‘are‘,‘winner‘]
print(list5.index(‘are‘))
#1

insert    #在指定位置插入元素

list6=[1,2,3,4]
list6.insert(2,‘item‘)
print(list6)
#[1, 2, ‘item‘, 3, 4]

pop          #弹出一个元素,如果没有指定下标,默认最后一个
list7=[‘item1‘,‘item2‘,‘item3‘,‘item4‘]
print(list7.pop())
#item4
list8=[‘item1‘,‘item2‘,‘item3‘,‘item4‘]
print(list8.pop(0))
#item1

remove   #按值删除元素,如果某个值存在多个,则删除第一个匹配项

list9=[‘my‘,‘name‘,‘is‘,‘zhoufeng‘,‘zhoufeng‘,‘is‘,‘me‘]
list9.remove(‘zhoufeng‘)
print(list9)
#[‘my‘, ‘name‘, ‘is‘, ‘zhoufeng‘, ‘is‘, ‘me‘]
 
?sort    #排序,    原地排序,不会生成排序后的副本,要想不改变原列表,而是生成排序后的副本,可以使用sorted()

list1=[‘a‘,‘s‘,‘d‘,‘f‘,‘g‘,‘x‘]
list1.sort()
print(list1)
#[‘a‘, ‘d‘, ‘f‘, ‘g‘, ‘s‘, ‘x‘]

4、元组操作
tuple()函数       #将任意的序列变为一个元组

#元组存在的意义:
可以作为映射的键使用,而列表不可以
元组作为很多内建函数和方法的返回值存在

5、字符串操作

字符串格式化
str1=‘%s plus %s equals %s‘ %(1,1,2)   #注意字符串在引号中,被格式化的对象不能在引号中,最后一个%是格式化操作符,前面的%都是占位符
print(str1)
#1 plus 1 equals 2
print(‘%s plus %s equals %s‘ %(1,1,2))
#1 plus 1 equals 2
 
find     #返回子串的索引     

str1="this is a test string"
print(str1.find(‘is‘))
#2


jion    #将序列中的元素通过指定的符号连接成一个字符串     #注意序列中的元素必须是字符串

list1=[‘1‘,‘2‘,‘3‘,‘4‘]
print(‘+‘.join(list1)) #为什么不是list1.join(‘+‘) ?
#1+2+3+4
 lower     #将字符串中的大写变为小写,注意并不返回新生成的字符串,print(str1.lower())是错误的。
str1="HELLO WORLD"

str1=str1.lower()
#hello world

replace    #替换所有匹配的子串,返回新生成的字符串

str1=‘this is a test‘
print(str1.replace(‘is‘,‘eez‘))
#theez eez a test

split   #按给定的分隔符切割字符串,和join是相反的过程


strip       #去掉开头和结尾的空格,并返回新生成的字符串

str2=‘ hello world   ‘
print(str2.strip())
#hello world

6、字典操作

#字典是python中唯一的内建映射,由键取值,键可以是数字、字符串、元组


#字典是无序的,for循环遍历元素的时候,是无序输出的


取所有的键、取所有的值、取所有的元素

dict1={‘name‘:‘zhoufeng‘,‘sex‘:‘man‘,‘age‘:‘26‘}

print(dict1.keys()) #以字符串列表形式输出所有的键
#dict_keys([‘age‘, ‘sex‘, ‘name‘])

print(dict1.values()) #以字符串列表形式输出所有的值
#dict_values([‘26‘, ‘man‘, ‘zhoufeng‘])

print(dict1.items()) #以元组列表的形式输出所有的元素,仅用于for循环当中
#dict_items([(‘age‘, ‘26‘), (‘sex‘, ‘man‘), (‘name‘, ‘zhoufeng‘)])



遍历字典
dict1={‘name‘:‘zhoufeng‘,‘sex‘:‘man‘,‘age‘:‘26‘}
for key,value in dict1.items():
print(key,value)
print("==============")

#sex man
#==============
#name zhoufeng
#==============
#age 26
#==============











 

python基础知识---数据结构

标签:

原文地址:http://www.cnblogs.com/zhoufeng1989/p/5095486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!