09--列表、元组、字典

一、列表

1、定义列表

l = list()
l1 = []
# 定义空的列表的两种方式

2、类型转换

    但凡能够被for循环的对象,都可以当做参数传给list(),转成列表

a = 'name'
l = list(a)  # 底层相当于调用for循环,将每个数据存到列表中
print(l)
# 默认是把字典的key转成列表
l = list({'k1':'name','k2':'age'})
print(l)

3、优先掌握的操作

  3.1 按照索引取值(正向取反向取)

list1 = ['a',1,'b','2']
# 1按索引取值:既可以取值也可以改
print(list1[0])
print(list1[-1])
# 索引存在则修改对应值,索引不存在,则会报错
list1[0] = 'c'
print(list1)

  3.2 切片:索引的扩展操作

list1 = ['a',1,'b','2']
print(list1[::-1])
# 相当于拷贝操作,浅拷贝

  3.3 长度len()

list1 = ['a',1,'b','2']
print(len(list1))

  3.3 成员运算

list1 = ['a',1,'b','2']
print('a' in list1)
print('a' not in list1)

  3.4 添加

    3.4.1 追加 .append()

list1 = ['a',1,'b','2']
list1.append(3)
print(list1)

    3.4.2 扩展 .extend(),将可迭代对象的每一个元素追加到列表中

list1 = ['a',1,'b','2']
list2 = [1,2,3]
# for i in list2:
#     list1.append(i)
# print(list1)
# 实现上述代码操作
list1.extend(list2)
print(list1)

    3.4.3 指定位置添加 .insert()

list1 = ['a',1,'b','2']
list1.insert(1,'egon')
print(list1)

  3.5 删除

    3.5.1 del 删除

del,通用的的删除方法,可以删除切片,没有返回值,只是单纯的删除
list1 = ['a',1,'b','2']
del list1[0]
del list1

    3.5.2 pop(),根据索引删除,会返回删除的元素,默认删除最后一个值

list1 = ['a',1,'b','2']
res = list1.pop(2)
print(res)
print(list1)

    3.5.3 remove(),根据元素值删除元素,没有返回值

list1 = ['a',1,'b','2']
res= list1.remove('a')
print(list1)
print(res)  # None

    3.6 reverse():颠倒列表顺序

list1 = ['a',1,'b','2']
print(list1.reverse())
# 注意,这个没有排序的功能

    3.7 sort() 给列表排序

list2 = [1,2,4,6,2,3]
print(list2.sort()) # 数字默认从小到大排
print(list2.sort(reverse=True))  #  从打到小排

# 了解:字符串可以比大小,按照ASCII码表的先后顺序区别字符的大小
    # 比较字符串大小按照对应位置依次比大小
    # 在ASCII中表中越靠后的字符大于前面的

# 了解:列表之间也可以比大小,按照对应位置进行比大小,如果对应位置数据类型不同,会报错
l = [1,'abc','z']
l1 = [10,]
print(l1 > l )

       3.8 循环:遍历列表

list1 = ['a',1,'b','2']
for i in list1:
    print(i)

4、需要掌握的操作

  4.1 count():计算列表中某个元素的个数

list1 = ['a',1,'b','2']
# 某个元素的个数
print(list1.count(1))

  4.2index(),按照值找对应的索引

list1 = ['a',1,'b','2']
print(list1.index(1))

  4.3 .copy():浅拷贝

list1 = ['a',1,'b','2']
list2 = list1.copy()

  4.4 clear(),清空列表

list1 = ['a',1,'b','2']
list1.clear()
print(list1)

  4.5 队列和堆栈

# 队列:first in,first out(FIFO,先进先出)
l = []
# 入队操作
l.append('first')
l.append('second')
l.append('third')
# 出队操作
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))


# 堆栈  (last in first out LIFO)
l.append('first')
l.append('second')
l.append('third')
# 出队操作
print(l.pop())
print(l.pop())
print(l.pop())

二、元组:也被称为只读列表

1、定义元组:按照位置存放多个值,只能读不能取

t=(1,1.3,'aa')

2、类型转换:与列表相同

print(tuple('hello'))
print(tuple([1,2,3]))
print(tuple({'a1':111,'a2':333}))

3、优先掌握的操作

  3.1 按索引取值:正向、反向,同列表操作

t=('aa','bbb','cc')
print(t[0])
print(t[-1])

  3.2 切片:顾头不顾尾

t=('aa','bbb','cc','dd','eee')
print(t[0:3])
print(t[::-1])

  3.3 len()

t=('aa','bbb','cc','dd','eee')
print(len(t))

  3.4 成员运算 in not in

print('aa' in t)

  3.5 循环遍历:与列表相同

  3.6 count():与列表的count相同

三、字典

1、定义:{}内用逗号分隔开多个key:value,其中value可以是任意类型的值,key必须是不可变类型,一般是对value具有描述性质的字符串,而且key不能重复

2、创建空字典的方式

  2.1 方式一

dic = {'k':'v','k1':'v1'}

  2.2 方式二-创建空字典的方式

d = {}
d1 = dict()

  2.3 方式三

d = dict{x=12,y=2}

  2.4 方式四,列表转为字典,前提是列表中必须只有两个值

info=[
    ['name','egon'],
    ('age',18),
    ['gender','male']
]
d = {}
for k,v in info:  # 解压赋值 k,v = items
    d[k] = v
print(d)

  2.5 方式五:一行代码搞定方式四

d = dict(info)

  2.6 方式六:快速初始化一个字典

keys=['name','age','gender']
d = {}
for key in keys:
    d[key] = None
print(d)

# 一行代码搞定上述操作
d1 = {}.fromkeys(keys,None)
print(d1)

3、优先掌握的操作

  3.1 按key存取值,可存可取

d={'k1':111}
#针对赋值操作:key存在,则修改
d['k1']=222
#针对赋值操作:key不存在,则创建新值
d['k2']=3333
print(d)

   3.2 len():键值对的个数,当有key重复的时候,只记一次

d={'k1':111,'k2':2222,'k1':3333,'k1':4444}
print(d)
print(len(d))

  3.3 in 和 not in :根据key

d={'k1':111,'k2':2222}
print('k1' in d)
print(111 in d)

   3.4 删除操作

    3.4.1 del 通用删除

d={'k1':111,'k2':2222}
del d['k1']
print(d)

    3.4.2 pop,根据key删除元素,会返回key对应的value

d={'k1':111,'k2':2222}
res=d.pop('k2')
print(d)
print(res)

    3.4.3 popitem随机删除一组键值对,将被删除的键值对以元组的方式返回

d={'k1':111,'k2':2222}
res=d.popitem()
print(d)
print(res)

  3.5 key(). value().items()在python3中得到的是一只老母鸡

# 在python2中
>>> d={'k1':111,'k2':2222}
>>> 
>>> d.keys()
['k2', 'k1']
>>> d.values()
[2222, 111]
>>> d.items()
[('k2', 2222), ('k1', 111)]
>>> dict(d.items())
{'k2': 2222, 'k1': 111}
>>>
# 在python3中
>>> d = {'name':'egon','age':12}
>>> d.keys()
dict_keys(['name', 'age'])
>>> d.values()
dict_values(['egon', 12])
>>> d.items()
dict_items([('name', 'egon'), ('age', 12)])
>>>

  3.6for循环遍历

# 遍历key
for k in d.keys():
    print(k)

for k in d:
    print(k)
# 遍历value
for v in d.values():
    print(v)
# 遍历键值对
for k,v in d.items():
    print(k,v)
# 将遍历结果转成列表
print(list(d.keys()))
print(list(d.values()))
print(list(d.items()))

4、需要掌握的内置方法

  4.1 clear 清空字典

  4.2 update():更新字典,存在的键值对进行覆盖,不存在的进行添加

d={'k1':111}
d.update({'k2':222,'k3':333,'k1':111111111111111})
print(d)

  4.3 .get()根据key取值,容错性高,弥补当key不存在时,报错的问题

d = {'a':'gg','k':21}
# 弥补当key不存在时会报错的问题,不会报错,会返回None
print(d['k3'])  # 会报错
d.get('k3')    # 会返回none,容错性好

  4.4 setdefault:如果key存在,且value也相同,原列表不发生任何变化,如果value与原列表不同,原列表的value也不会变化。key不存在,添加键值对。

            有返回值,返回值是setdefault执行完毕后,字典中key对应的value

d = {'name':'egon','age':18}
res = d.setdefault('name' ,'male')
print(res)
# if 'sex' in d:
#     ...  # 等同于pass
# else:
#     d['sex'] = 'male'

 

posted @ 2020-03-11 16:57  微信搜索-程序媛小庄  阅读(144)  评论(0编辑  收藏  举报