Python-基本数据结构list和dict

width="330" height="86" src="//music.163.com/outchain/player?type=3&id=910763036&auto=1&height=66" border="0">

list和dict,顾名思义,就是列表和字典,这是python中非常基础的数据结构,也是非常重要且用途最广的数据结构,所以我把它们放在数据结构的第一节来介绍。列表list就是一串糖葫芦list是python的一种内置数据结构,你把它想象成一串糖葫芦就好了。python提前设定好了list的特点和一些固定操作(或方法或函数),计算机知道该怎么进行具体操作。list用中括号表示,里面的值用英文的逗号分开。特点与操作list有这么几个简单的特点:长度不固定,就像糖葫芦可以串8个,串10个,当然也有奸商可能就串6个,甚至4个类型不固定,糖葫芦可以串山楂,黑枣,橘子等等,list里面也可以放字符串,数字,列表等等可以修改,就好像制作糖葫芦,你本来要串个山楂,结果串了个橘子,可以把对应的那个错的修改了就好啦。list可以做这样的几个操作:append: 追加元素,相当于给糖葫芦一个个的串山楂
+,extend: 多个列表相加, 相当于把两串糖葫芦连在一起
insert: 向指定位置插入一个值,假如要给糖葫芦的第二个位置串一个黑枣remove, pop: 移除某一个元素,糖葫芦中间某个坏了,给剔除
a in list_b: 检查某个元素是否存在,检查一个纯山楂的糖葫芦里是不是有黑枣sort: 排序,这个糖葫芦比较难办,假装要一串山楂从小到大排列的糖葫芦吧!
[:]: 切片操作,假如你吃糖葫芦时候,就喜欢吃第2个到第5个,该怎么啃?
代码演示>>> help(list)

dir(list)
[‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

hulu1 = [‘zha’,‘zha’,‘zha’,‘zha’]
hulu2 = [1,2,3,4,5,6,7]
hulu3 = []
hulu3 = hulu1+hulu2
hulu3
[‘zha’, ‘zha’, ‘zha’, ‘zha’, 1, 2, 3, 4, 5, 6, 7]

hulu3.extend(hulu1)
hulu3
[‘zha’, ‘zha’, ‘zha’, ‘zha’, 1, 2, 3, 4, 5, 6, 7, ‘zha’, ‘zha’, ‘zha’, ‘zha’]

hulu1.append(‘zao’)
hulu1.append(‘zao’)
hulu1.append(‘zao’)
hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’, ‘zao’, ‘zao’]

len(hulu1)
7

len(hulu3)
15

hulu1.insert(3, ‘xxx’)
hulu1
[‘zha’, ‘zha’, ‘zha’, ‘xxx’, ‘zha’, ‘zao’, ‘zao’, ‘zao’]

hulu1.remove(3)
Traceback (most recent call last):
File “”, line 1, in
ValueError: list.remove(x): x not in list

hulu1.remove(‘xxx’)
hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’, ‘zao’, ‘zao’]

hulu1.pop()
‘zao’

hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’, ‘zao’]

hulu1.pop()
‘zao’

hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’]

hulu1.insert(2, ‘yyy’)
hulu1
[‘zha’, ‘zha’, ‘yyy’, ‘zha’, ‘zha’, ‘zao’]

hulu1.pop(2)
‘yyy’

hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’]

y in hulu1
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘y’ is not defined

‘yyy’ in hulu1
False

‘zha’ in hulu1
True

hulu1
[‘zha’, ‘zha’, ‘zha’, ‘zha’, ‘zao’]

hulu1.sort()
hulu1
[‘zao’, ‘zha’, ‘zha’, ‘zha’, ‘zha’]

s=[5,2,6,8,34,7,8]
s.sort()
s
[2, 5, 6, 7, 8, 8, 34]

s=[5,2,6,8,34,7,8,‘a1’,‘b5’, ‘a6’,‘b2’,‘a3’]
s.sort()
Traceback (most recent call last):
File “”, line 1, in
TypeError: unorderable types: str() < int()

s
[2, 5, 6, 7, 8, 8, 34, ‘a1’, ‘b5’, ‘a6’, ‘b2’, ‘a3’]

s=[5,2,6,8,34,7,8,‘am’,‘bw’, ‘af’,‘bs’,‘an’]
s.sort()
Traceback (most recent call last):
File “”, line 1, in
TypeError: unorderable types: str() < int()

s=[‘am’,‘bw’, ‘af’,‘bs’,‘an’]
s.sort()
s
[‘af’, ‘am’, ‘an’, ‘bs’, ‘bw’]

s[1]
‘am’

s[3]
‘bs’

s[3:]
[‘bs’, ‘bw’]

s[:2]
[‘af’, ‘am’]

s[:]
[‘af’, ‘am’, ‘an’, ‘bs’, ‘bw’]

s[::2]
[‘af’, ‘an’, ‘bw’]

s[::-1]
[‘bw’, ‘bs’, ‘an’, ‘am’, ‘af’]

s=‘asdfghjk’
s[::-1]
‘kjhgfdsa’

s[:5]
‘asdfg’

s[3:]
‘fghjk’

s[::3]
‘afj’

字典就是一本字典python的dict这种数据结构可以直接理解为字典,不管汉语字典还是英语词典,给你一个词,这个词在python的字典里叫做key,中文是键盘的键,用这个词可以找到它相关的意思或者说具体内容,这个内容在python的字典里,叫做key的值或者value,或简单叫作v。dict用大括号表示,里面用英文的逗号分隔多个组,用冒号隔开每一组的key和v。特点与操作dict的特点:key是不可变的,很简单去理解,查单词的时候,如果查到一半这个词自己变了,那肯定查的就是别的词儿了。这个key的类型可以是int,float,或是string。你可以理解用目录的页面编号去查找某一页,或者用一个单词去查她的意思。字典默认是无序的。因为字典只是一堆kv的集合,相当于一个大书包,各种书随便丢在里面了。排序的问题以后再说。dict的常用操作:{‘k’:‘v’}, dict(zip(list_k, list_v)): 创建方法(使用kv或者zip)d[‘k’],d.get(‘k’): 获取元素(直接中括号里用k或get方法)‘k’ in d: 检测k是否存在d.keys(): 获取所有的kd.values(): 获取所有的值del d[‘k’]: 删除kd1.update(d2): 更新值,同k被覆盖代码演示>>> help(dict) # 查看帮助,浏览全局

dir(dict) # 查看有哪些方法
[‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘init’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’]

d={‘k’:2,‘x’:“ttt”} # 用大括号建立字典
d
{‘x’: ‘ttt’, ‘k’: 2}

list_k=[1,2,‘n’]
list_v=[‘hello’,‘python’,‘de8ug’]
d=dict(zip(list_k, list_v)) # 用zip和kv的列表建立字典
d
{1: ‘hello’, 2: ‘python’, ‘n’: ‘de8ug’}

d[‘1’] # 用不存在的k会报错
Traceback (most recent call last):
File “”, line 1, in
KeyError: ‘1’

d[1]
‘hello’

d[‘n’]
‘de8ug’

d[‘n’] = ‘nb’ # 更新key的值
d
{1: ‘hello’, 2: ‘python’, ‘n’: ‘nb’}

d.get(‘n’) # 用get获取
‘nb’

d.get(‘m’) # 没有k的时候为空
d.get(‘m’, ‘yyy’) # 取不到时候设置默认的值
‘yyy’

‘m’ in d # 判断是否存在k
False

‘n’ in d
True

del d[‘n’] # 删除k
d
{1: ‘hello’, 2: ‘python’}

d[‘k’]=‘tttt’ # 直接添加k和v到字典,k之前可不存在
d
{1: ‘hello’, 2: ‘python’, ‘k’: ‘tttt’}

d.keys # keys是方法,调用要加括号
<built-in method keys of dict object at 0x102401d48>

d.keys()
dict_keys([1, 2, ‘k’])

d.values()
dict_values([‘hello’, ‘python’, ‘tttt’])

d2={}
d2[2]=‘sdfsdf’
d2[k2]=“yyyy” # 注意k的取值,一半数字或字符串,否则报错
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘k2’ is not defined

d2[4]=‘sdfsdf’
d2
{2: ‘sdfsdf’, 4: ‘sdfsdf’}

d2[“k2”]=“yyyy”
d2
{2: ‘sdfsdf’, 4: ‘sdfsdf’, ‘k2’: ‘yyyy’}

d
{1: ‘hello’, 2: ‘python’, ‘k’: ‘tttt’}

d.update(d2) # 更新,相同的k会被覆盖
d
{1: ‘hello’, 2: ‘sdfsdf’, 4: ‘sdfsdf’, ‘k’: ‘tttt’, ‘k2’: ‘yyyy’}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值