python学习之list/tuple/set

概述

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字( 它的位置,或索引),第一个索引是0,第二个索引是1,依此类推。

下面就看看这些数据结构

list

list是python的内置数据类型,以‘[]’标识,包含的数据类可以不同(整数、浮点数、字符串、list、tuple、dict、set、bool、空值、常量)

创建
list1 = [1,2,3,4,'a','b','c',None,2.2]  #创建
list2 = list()    #空list
list3 = []        #空list

print list1  
print list2
print list3

# 结果
[1, 2, 3, 4, 'a', 'b', 'c', None, 2.2]
[]
[]
访问&修改
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8]

print 'list1[1]:', list1[1]
print 'list1[1:3]', list1[1:3]
print 'list1[2:]', list1[2:]
print 'list1[:5]', list1[:5]
print 'list1[-1]', list1[-1]

# 结果
list1[1]: 1
list1[1:3] [1, 2]
list1[2:] [2, 3, 4, 5, 6, 7, 8]
list1[:5] [0, 1, 2, 3, 4]
list1[-1] 8


list1 = [1,2,3]
print list1
list1[2] = 5
print list1
list1[1] = 8
print list1

# 结果
[1, 2, 3]
[1, 2, 5]
[1, 8, 5]
增加元素&删除元素
list1 = [1,2,3]
print list1
list1.append(4)
print list1
list1.append('a')
print list1
del list1[1]
print list1

# 结果
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 'a']
[1, 3, 4, 'a']
操作符
list1 = [1,2,3]
print len(list1)  # 获取长度
print list1*2     # 重复
print [1,2,3]+[2,3] # 组合
print 1 in list1    #元素是否在列表中

# 结果
3
[1, 2, 3, 1, 2, 3]
[1, 2, 3, 2, 3]
True
方法
  • list.count(obj) 计算列表中元素出现的次数
  • list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
  • list.pop(index) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  • list.remove(obj) 移除列表中某个值的第一个匹配项
  • list.reverse() 反转列表
  • list.sort() 对列表排序
  • list.extend() 列表尾部一次性加入多个值
tuple

元祖与list类似,不同的元祖元素不能修改,并且使用’()’标志元祖,创建方式也很简单

创建
tup1 = (1,2,3,4,5)
tup1 = ()
tup1 = tuple()
访问元素
tup1 = (1,2,3,4,5)
print tup1[1]
print tup1[-2]
修改/增加/删除——不允许
操作符-和list一样
set

set是一个无序(不是存入的序列)且不重复的元素集合,也就是set与dict一样,只是没有value,而由于dict的key不重复,且key不可改变,因此set同样具有不重复和元素不可改变的特性

创建
s = set()
print s
s = {1,2,3,4}
print s
s = {1,1,2,3,2}
print s

# 结果
set([])
set([1, 2, 3, 4])
set([1, 2, 3])
set方法
s = {1, 2, 3, 4}
# add
s.add(6)
print s

# 结果
set([1, 2, 3, 4, 6])


# 删除
# pop,移除尾部元素并返回移除的值
s = {11, 22, 33}
temp = s.pop()
print temp
print s
# discard
s.discard(11)
s.discard(55) #删除不存在元素,不报错
print s
# remove 同discard,但删除不存在元素会报错

# 结果
33
set([11, 22])
set([22])


# 更新,obj更新
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.update({5})
print s1
s1.update('a')
print s1

# 结果
set([1, 2, 3, 5])
set(['a', 1, 2, 3, 5])


# clear
s1 = {1, 2}
s1.clear()
print s1

# 结果
set([])


# 交集
s1 = {1, 2, 3}
s2 = {2, 3, 5}
# 取交集
print s1.intersection(s2)
# 取交集并更新自己
print s1.intersection_update(s2)
print s1

# 结果
set([2, 3])
None
set([2, 3])


# 差集,交集取反
s1 = {1, 2, 3}
s2 = {2, 3, 4}
temp1 = s1.symmetric_difference(s2)
print temp1
print s1
temp2 = s1.symmetric_difference_update(s2) #更新自己
print temp2
print s1

# 结果
set([1, 4])
set([1, 2, 3])
None
set([1, 4])


# 并集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
temp = s1.union(s2)
print temp

# 结果
set([1, 2, 3, 4])


# 不同
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print s1.difference(s2)
print s2.difference(s1)

# 结果
set([1])
set([4])


# 子集与父集
s1 = {1, 2, 3}
s2 = {1, 2}
print s2.issubset(s1)
print s1.issubset(s2)
print s2.issuperset(s1)
print s1.issuperset(s2)

# 结果
True
False
False
True
总结
  • list、tuple是有序列表;dict、set是无序列表
  • list元素可变、tuple元素不可变
  • dict和set的key值不可变,唯一性
  • set只有key没有value
  • set的用途:去重、并集、交集等
  • dict查询效率高,但是消耗内存多;list、tuple查询效率低、但是消耗内存少
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值