美文网首页
Python数据结构

Python数据结构

作者: 无敌的肉包 | 来源:发表于2018-05-20 16:25 被阅读0次

Python中数据结构可以统称为容器,常见的数据结构包括序列(列表和元组等),映射(字典)和集合(Set)。
一 、序列(列表,元组和字符串)

  1. 列表
    内容可变——中括号 []

创建列表

list1=['hello','world'] 
print (list1) 
list2=[1,2,3] 
print (list2)

list 函数
可以通过list函数对字符串创建列表

list3=list("hello") 
print (list3)
#输出:['h', 'e', 'l', 'l', 'o']

列表函数

  • append --- 用于在列表末尾追加新的对象
#Input: 
lst=[1,2,3] 
lst.append(4)
#Output:
[1,2,3,4]
  • count --- 统计某个元素在列表中出现的次数
#Input: 
x=[1,2,1,1,2,2,3] 
x.count(1)
#Output: 
3
  • extend --- 在列表的末尾一次性追加另个序中多值
#Input:
a=[1,2,3]
b=[4,5,6]
a.extend(b)
#Output: 
[1,2,3,4,5,6]
  • Index --- 用于从列表中找到某个值第一匹配项的索引位置
lst.index(‘A’)
  • insert --- 用于将对象插入到列表中
#Input:
numbers=[1,2,3,5,6,7] 
numbers.insert(3,’four’)
#Output: 
[1,2,3,’four’,5,6,7]
  • pop --- 移除列表中的一个元素(默认最后),并返回该值 移除列表中的一个元素(默认最后),并返回该值 移除列表中的一个元素(默认最后),并返回该值,pop方法是唯一个既能修改列表又返回元素之(除了 None)的列表方法
#Input:
x=[1,2,3,5,6,7] 
x.pop( )
#Output: 
7
  • remove --- 用于移出列表中某个值的第一匹配项 (修改列表但无返回值 )
Input:
x=[‘to’,’be’,’or’,’not’,’to’,’be’] 
x.remove(‘be’)
Output: 
[‘to’,’or’,’not’,’to’]
  • reverse --- 将列表中的元素反向存放
#Input:
x=[1,2,3] 
x.reverse() 
#Output: 
[3,2,1]
  • sort --- 用于在原位置对列表进行排序 用于在原位置对列表进行排序
#Input:
x=[4,6,2,1,7,9] 
x.sort( )
#Output: 
[1,2,4,6,7,9]
  1. 元组
    元组内容不可变——小括号()

创建元组

t1=1,2,3 
t2="jeffreyzhao","cnblogs" 
t3=(1,2,3,4) 
t4=() 
t5=(1,) 
print (t1,t2,t3,t4,t5)

a. 逗号分隔一些值,元组自动创建完成;
b. 元组大部分时候是通过圆括号括起来的;
c. 空元组可以用没有包含内容的圆括号来表示;
d. 只含一个值的元组,必须加个逗号(,)

tuple函数
tuple函数和序列的list函数几乎一样:以一个序列作为参数并把它转化为元组。如果 参数就算元组,那么该会原样返回:

t1=tuple([1,2,3]) 
t2=tuple("jeff")
t3=tuple((1,2,3)) 
print (t1) 
print (t2)
print (t3) 
t4=tuple(123) 
print (t45) 
#输出: 
(1, 2, 3) 
('j', 'e', 'f', 'f') 
(1, 2, 3)
TypeError: 'int' object is not iterable

zip函数
zip函数接受任意多个序列作为参数,返回一个tuple列表。
zip函数是内置函数,能把迭代对象进行聚合,返回值是迭代对象聚合后的元组,可以用list函数把他转化成列表。

>>> k=list(zip(*[[1,2,3],[4,5,6]]))
>>> k
[(1, 4), (2, 5), (3, 6)]
  1. 字符串
    内容不可变——引号‘’

创建

str1='Hello world' 
print (str1) 
print (str1[0])
for c in str1: 
    print (c)

格式化
字符串格式化使用格式化操作符即百分号 %来实现。

  1. 通用序列操作

索引
索引从 0(从左向右)开始,所有序列可通过这种方式进行索引。神奇的是,索引可以从最后一个位 置(从右向左)开始,编号是 -1。

str1='Hello' 
nums=[1,2,3,4] 
t1=(123,234,345) 
print (str1[0]) 
print (nums[1]) 
print (t1[2]) 
输出: 
H 
2
345

分片
分片操作用来访问一定范围内的元素。通过冒号相隔两个索引实现:[a:b:c] 通常不包括索引为 b的数据 ,c为步长。分片的操作需要提供两个索引为边界,第一元素是包含在内,而第二个则不包含在内。
序列相加

str1='Hello' 
str2=' world'
print (str1+str2) 
num1=[1,2,3] 
num2=[2,3,4] 
print (num1+num2)
print (str1+num1) 
#输出: 
Hello world 
[1, 2, 3, 2, 3, 4]
TypeError: must be str, not list

乘法
只能与数字相乘,元素个数翻倍

print ([None]*10) 
str1='Hello' 
print (str1*2) 
num1=[1,2] 
print (num1*2)
print (str1*num1) 
#输出: 
[None, None, None, None, None, None, None, None, None, None] 
HelloHello 
[1, 2, 1, 2]
TypeError: can't multiply sequence by non-int of type 'list'

成员资格
in运算符会用来检查一个对象是否为某序列(或者其他类型) 的成员即元素

str1='Hello' 
print ('h' in str1)
print ('H' in str1)
#输出: 
False 
True

长度、最大小值
通过内建函数 lenmaxmin可以返回序列中所包含元素的数量、最大值和最小值。

二、映射
键类型
字典的键可以是数字、符串或者元组 ,键必须唯一。
在 Python中, 数字、符串和元组都被设计成不可变类型,而常见的列表以及集合都是可变的,所以列表和集合不能作为字典键 。字典键可以为任何不可变类型

A={key:value ,} 
A[key]=value

自动添加
即使键在字典中并不存,也可以为它分配一个值这样就会建立新的项。
成员资格
表达式 item in d(d为字典)查找的是键(contains key),而不是值( contains value)。

三、集合

strs=set(['jeff','wong','cnblogs']) 
nums=set(range(10))

1.副本是被忽略的,即元素唯一性
2.集合元素的顺序是随意
3.集合常用方法:
A.union(B)
union操作返回两个集 合的并,不改变原有集合 。使用按位与(OR)运算符 “|”可 以得到一样的结果
其他常见操作包括 &(交集) ,<=,>=,-,copy(),add和remove
4.frozenset
集合是可变的,所以不能用做字典键。本身只包含值也就其他可以使用frozenset类型用于代表不可变(散列)的集合类型用于代表不可变(散列)的集合Set1.add(frozenset(set2)

相关文章

网友评论

      本文标题:Python数据结构

      本文链接:https://www.haomeiwen.com/subject/tuctdftx.html