Python 3(5)数据结构:列表,元组,集合,字典

Python3 入门专栏

http://blog.csdn.net/column/details/19679.html



序列 Sequence


序列是 python 中最基本的数据结构,序列中的每个元素都分配一个数字索引,索引从 0 开始;

python 有6个序列的内置类型:List 列表、Tuple 元组、String 字符串、Unicode 字符串、buffer 对象、xrange 对象

序列都可以进行以下通用的操作:
  • 索引(indexing):使用方括号 [ ]进行索引访问,如seq[0]
  • 切片(sliceing)使用方括号 [:] 进行切片,如:seq[2:7]
  • 加(adding):使用加号+进行序列拼贴,如: seq = seq1 + seq2
  • 乘(multiplying):使用乘号*进行序列重复,如: seq = tinySeq * 5
  • 检查成员资格:使用 innot in检查成员资格,如:e in seq

此外,python 已经内置以下对序列的便捷函数:
  • len():返回序列长度 
  • min():返回序列中最小的元素
  • max():返回序列中最大的元素

在 python 的基本数据类型中:Number,String,Tuple ,Sets 是不可更改的对象,List,Dictionary 是可变对象;



列表 List

  • List 可以完成大多数集合类的数据结构实现,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表;
  • List 写在方括号 [ ] 之间,元素用逗号隔开,支持嵌套;
  • 列表中的元素是可变对象,可以重新赋值;
List 的创建和元素访问
 
list1 = [12, 2.33, "Hello", "World"]
list2 = ["!", 1, 2]
print(list1)       # 输出列表:[12, 2.33, 'Hello', 'World']
print(list1[0])    # 输出第1个元素:12
print(list[-1])    # 输出最后一个元素:!
print(list1[1:3])  # 输出第2到第3个元素:[2.33, 'Hello']
print(list1[2:])   # 输出从第3个元素开始的所有元素:['Hello', 'World']
print(list1 * 2)   # 输出2次列表:[12, 2.33, 'Hello', 'World', 12, 2.33, 'Hello', 'World']
print(list1 + list2)  # 连接列表:[12, 2.33, 'Hello', 'World', '!', 1, 2]
del list1[0]   # 删除列表元素
可以通过range() 函数来快速创建列表:
 
list1 = list(range(5))                # [0, 1, 2, 3, 4]
list2 = list(range(0, 100, 10))       # [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
也可以创建一个空列表,再填充元素
 
citys = []  # or: citys = list()
citys.append("Guanzhou")
citys.append("Shanghai")
citys.append("Beijing")
也可以通过list(seq) 函数将其他的序列对象转化为 list 对象

嵌套列表
pyton 支持嵌套列表,以下是一个二维列表的创建和元素获取
 
matrix = [[1, 2, 3, 4], [5, 6, 7, 8]]
print(matrix[0][1])  # 输出2
matrix2 = list()
array1 = [1, 2, 3, 4]
array2 = [5, 6, 7, 8]
matrix2.append(array1)

列表的遍历
 
list1 = [1, 2, 3, 4, 5]
for e in list1:
    print(e)
for i in range(len(list1)):
    print(list1[i])

List 的内置函数和方法
list.count(obj)统计某个元素在列表中出现的次数
ist.append(obj)在列表末尾添加新的对象
list.insert(index, obj)将对象插入列表
list.remove(obj)移除列表中某个值的第一个匹配项
list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.copy()复制列表
list.clear()清空列表
list.reverse()反向列表中元素
list.sort([func])对原列表进行排序(默认升序排列)




元组 Tuple

  • 元组(tuple)与列表类似,不同之处在于元组的元素不能修改;
  • 元组写在小括号 ( ) 里,元素之间用逗号隔开;
  • 元组中的元素是不可变对象,不可以从重新赋值;
 
tuple1 = ("abcd", 123 , 2.333, "Hello", 70.2)
tuple2 = ()     #or tuple2 = tuple()
tuple3 = (20,)  # 只包含一个元素的元组
var = tuple[1];
del tuple;



集合 Sets

  • 集合(set)是一个无序不重复元素的序列,主要功能是进行成员关系测试和删除重复元素。
  • 可以使用大括号 { } 或者 set() 函数创建集合,但是创建一个空集合必须用 set();
  • 集合中的元素是不可变对象,不可以重新赋值;
 
student1 = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student)   # 输出集合,重复的元素被自动去掉:{'Mary', 'Tom', 'Jack', 'Jim', 'Rose'}
student2 = set()  # 空集合
student3 = set(myList)  #从 List 创建集合 
由于 set 无法通过下标访问,对于 set 中元素的访问可以通过 for in 进行遍历,或者通过迭代器来进行;



字典 Dictionary

  • 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合,类似于 Java 的 HashMap ,PHP 的映射数组;
  • 键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的;
  • 同样的字典支持无限嵌套(类似 json 格式);
  • 字典中的元素是可变对象,可以重新赋值;

字典的创建和基本操作
 
dict1 = {"name": "assad", "age": 20, "city": "Guangzhou"}
dict2 = {}  # or dict2 = dict()
dict2["one"] = "are you ok"
dict2[1] = 12
print(dict1["name"])   # 输出 dict1 中 key = "name" 的 value
print(dict2[1])        # 输出 dict2 中 key = 2 的 value
print(dict1.keys())    # 输出 dict1 的所有 key
print(dict1.values())  # 输出 dict1 的所有 value
del dict["name"]   # 删除字典元素

遍历字典
 
user = {"name": "assad", "age": 20, "city": "Guangzhou"}
for key in user.keys():   # or for key in user:
    print(key, end=":")
    print(user[key])

字典的内置方法和函数
dict.items()以列表返回可遍历的(键, 值) 元组数组
dict.keys()以列表返回一个字典所有的键
dict.values()以列表返回一个字典所有的值
dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值
dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为 default
dict.pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值,key值为空时返回default值
dict.clear()清空字典内所有元素
dict.copy()返回一个字典的浅复制
dict.fromkeys()创建一个新字典,以序列 seq 中元素做字典的键,val为字典所有键对应的初始值
dict.update(dict2)把字典dict2的键/值对更新到dict里





迭代器

  • python 提供了迭代器对象可用于访问对象集合,字符串,列表,元组,集合对象等都可用于创建迭代器:
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
  • 迭代器有两个基本的方法:iter() 和 next()。
 
list1 = [1, 2, 3, 4, 5]
it = iter(list1)  # 创建 List 的迭代器对象
# 通过 for 遍历迭代器对象
for e in it:
    print(e, end=" ")
    
# 通过 next 方法遍历
it = iter(list1)
while True:
    try:
        print(next(it), end=" ")
    except StopIteration:
        break




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值