Python基础数据结构的总结

今天主要介绍Python中常见的五种数据结构:

  1. 字符串
  2. 列表
  3. 元组
  4. 字典
  5. 集合

一、字符串

Python中的字符串和C语言中的字符串的共同特点都是不能修改,因此这种语句是不能出现的

s = "hello"
s[0] = 's'		
ss = s[0:3]
#ss = 'hel'

Python中的字符串还有很多很实用的功能,比如可以截取它的子串:s[0:3]可以返回'hel'

此外,用in、not in关键字可以快速判断一个字符是不是在字符串中

print('h' in s)
#打印True
print('x' in s)
#打印False 
print('x' not in s)
#打印True

python中的字符串也可以使用+运算符,而且还有Java中没有的*运算符也可以使用,可以快速将一个字符串多次重复输出:

print('hello' * 2)
#打印hellohello
print('hello' + 'world')
#打印helloworld

我们知道,字符串中允许转义,但如果我们就想打印转义字符,也是可以的:

print(r'/n')
#会直接输出/n这个字符串,而不是换行

Python的字符串格式化输出:(C语言的朋友就会感到很亲切了)

print('我叫 %s 今年 %d 岁' %('小明', 26))
#打印结果:我叫 小明 今年 26 岁
s = '小明'
print('我叫' + s)
#打印结果:我叫小明。也可以,这样子更类似于Java的写法。

二、列表

python中的列表类似于C语言中的动态数组。我们可以在末尾动态添加元素,可以删除元素,也可以随意修改元素。并且python中的列表更强大,因为它不管什么类型的元素都能装进去!

列表常见的方法见下面代码:

#py测试代码
list = ['asd', 1, 9.13, 'c', "asd", ["asd", 123]]
#len()函数直接获得list的长度
print(list[len(list) - 1])
#两个列表可以直接拼接
print(list[0:3] + list[1:2])
#可以任意修改元素,元组不可以
list[0] = 'update'
print(list)
#删除指定下标的元素, 用del语句,那么后面的元素就自动前进。也可以用remove方法
del list[2]
#list.remove(list[3])一回事
del list[3]
print(list)
#同样能用乘法运算符
list2 = ["Hi!"] * 4
print(list2)
#打印['Hi!', 'Hi!', 'Hi!', 'Hi!']
list3 = [1, 2, 3, 4, 5]
#取出列表中的最大值最小值
print(max(list3))
print(min(list3))
print(list3)

三、元组

元组和列表唯一的区别就是,其元素是不能修改的。即不能添加,也不能删除。
测试代码:

#创建一个元组,同样也是可以装各种类型的数据
tup1 = ('asd', 1, 2, 0.03)
print(tup1)
tup2 = (999, 999, 999)
#可以用 + 运算符
tup3 = tup1 + tup2
print(tup3)
#元组转换成列表,这样就可以添加元素了
list1 = list(tup1)
list1.append("trans success!")
print(list1)
#列表也可以转换成元组
tup3 = tuple(list1)
print(tup3)

四、字典

一个简单的字典:

dict = {'Alice': 123, 'Tom' : 331}

字典就类似于Java中的HashMap。是一个k-v键值对。我们可以通过key快速索引到值,是个方便的数据结构。

#直接对key = 'Tom'的值进行修改
dict['Tom'] = 131
print(dict['Tom'])
#字典可以被转换成字符串
print(str(dict))
#删除某个键值对
del dict['Tom']

五、集合

python中的集合和Java中的Set也是类似的,都满足集合的无序性、元素唯一性。
python中也提供常见的集合运算符, + | - ^

测试代码:

a = set('asdmnbasd')
b = set(('asdasd', 'asdad'))
print(a)
#打印a中的元素只有:a, s, d, m, n, b。但顺序是随机的。
print(b)
#因为b是用一个元组初始化的,所以b打印出来有两个字符串元素:'asdasd', 'asdad';

#可以使用集合的交、并、差运算:
aa = set('abc')
bb = set('bd')
print(aa & bb)
#打印结果:b

print(aa - bb)
# 'a', 'c'  在aa集合中出现的,但在bb集合中没出现的

print(aa | bb)
#求并集

print(aa ^ bb)
#异或,在aa和bb中不同时出现的元素

【误区】:

del 和remove删除元素还是很不同的,这里我弄错了。
看下面的例子:

nums = [0,1,2,2,3,0,4,2]
nums.remove(nums[7])
#打印结果:[0, 1, 2, 3, 0, 4, 2]
#我们发现:实际上是把第一个值和nums[7]相等的元素删去了,并非一定删除第7个位置的元素
print(nums)

而看一看del语句:

nums = [0,1,2,2,3,0,4,2]
val = 2
del nums[7]
print(nums)
#[0, 1, 2, 2, 3, 0, 4]
#实际上是精准地删除掉了第7个位置的元素
总结:

del 强调删除元素的位置下标一定删除指明位置的元素值
而remove方法,只强调删除元素的值,它经过一次遍历,删除第一个遇到的val值,不在乎位置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值