前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习python的第十天(内置算法:列表数据类型,元祖数据类型,字典数据类型)

学习python的第十天(内置算法:列表数据类型,元祖数据类型,字典数据类型)

作者头像
小小咸鱼YwY
发布2019-07-24 15:43:00
4400
发布2019-07-24 15:43:00
举报
文章被收录于专栏:python-爬虫

5.8自我总结

1.列表类型内置算法

1.必须掌握

1.按索引取值(正向取值+反向取值),即可存也可以取
代码语言:javascript
复制
#用于取其中一个值
name = ['yang','wen','yi']
##正方向取wen,也就是从左到右
pritn(name[1])
##正方向取wen,也就是从右到左
print(name[-2])
2.切片
代码语言:javascript
复制
#用于取多个值
name = ['yang','wen','yi']
#取其中的yang wen
print(name[0:2])  #和字符串类似顾头不顾尾
print(name[0:-1])
print(name[-3:-1])
print(name[:2])    #这两个是上面基础上精简的
print(name[:-1])
3.长度len
代码语言:javascript
复制
#用于长度3
name = ['yang','wen','yi']
print(len(name))
4.成员运算in和not in
代码语言:javascript
复制
#用于判断有误值在里面
name = ['yang','wen','yi']
print('wennnn' in name) #False
print('wen' in name) #True
5.追加append
代码语言:javascript
复制
#只加在最后
name = ['yang','wen','yi']
print(name.append(22)) #None
print(name) #['yang', 'wen', 'yi', 222]
6.删除del
代码语言:javascript
复制
name = ['yang','wen','yi']
#删除wen
del name[1]
7.循环
代码语言:javascript
复制
name = ['yang','wen','yi']
for i in name:
    print(i)
#yang
#wen
#yi

2.了解

1.insert
代码语言:javascript
复制
name_list = ['nick', 'jason', 'tank', 'sean']
name_list.insert(1, 'handsome')  #加入后那个值的位置,加入的值
print(f"name_list: {name_list}")
2.pop
代码语言:javascript
复制
# list之pop(),pop()默认删除最后一个元素,删除一个元素
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.pop(1): {name_list.pop(1)}")  #会显示删除的值
print(f"name_list: {name_list}")
3.remove
代码语言:javascript
复制
# list之remove() 删除一个元素
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.remove('nick'): {name_list.remove('nick')}")  #会输出None
4.count
代码语言:javascript
复制
# list之count()     #x显示对于值的个数
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.count('nick'): {name_list.count('nick')}")
5.index

查找索引

6.clear

删除列表元素

7.copy
代码语言:javascript
复制
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.copy(): {name_list.copy()}")
8.extend
代码语言:javascript
复制
# list之extend()
name_list = ['nick', 'jason', 'tank', 'sean']
name_list2 = ['nick handsome']
name_list.extend(name_list2)

print(f"name_list: {name_list}")            
#name_list: ['nick', 'jason', 'tank', 'sean', 'nick handsome']   在末尾加入
9.reverse
代码语言:javascript
复制
# list之reverse()
name_list = ['nick', 'jason', 'tank', 'sean']
name_list.reverse()
print(f"name_list: {name_list}")
# name_list: ['sean', 'tank', 'jason', 'nick']  翻转
10.sort
代码语言:javascript
复制
# list之sort(),使用sort列表的元素必须是同类型的
name_list = ['nick', 'jason', 'tank', 'sean']
name_list.sort()

print(f"name_list: {name_list}")
#name_list: ['jason', 'nick', 'sean', 'tank']  #升序
name_list.sort(reverse=True)
print(f"name_list_reverse: {name_list}") 
#name_list_reverse: ['tank', 'sean', 'nick', 'jason']  #降序

3,一个值或者多个值

多个值

4.有序或者无序

有序

5.可变或者不可变

可变

2.元祖类型

1.定义

(),中间加元素用,隔开

2.用法

(与列表相似,区别是可以读取不可存储改变,列表中关于存储或者改名元素的内容内置函数元祖不行)

  1. 索引取值
  2. 切片(顾头不顾尾,步长)
  3. 长度len
  4. 成员运算in和not in
  5. 循环
  6. count
  7. index

3.一个值或者多个值

多个值

4.有序或者无序

有序

5.可变或者不可变

不可变

3.字典数据类型内置算法

1.必须掌握

1.按key存取值:可存可取
代码语言:javascript
复制
dict = {'name':'yang','age':18}
#取 姓名
dict[name]
2.长度len
代码语言:javascript
复制
dict = {'name':'yang','age':18}
#取 长度
len(dict)
3.成员运算in和not in
代码语言:javascript
复制
判断有无key而不是值
4.删除del
代码语言:javascript
复制
dict = {'name':'yang','age':18}
#删除名字
dal dict[name]
5.键keys()、值values()、键值对items()
代码语言:javascript
复制
#演示即可
dict = {'name':'yang','age':18}
print(dict.keys())
print(dict.values())
print(dict.items())
'''
dict_keys(['name', 'age'])
dict_values(['yang', 18])
dict_items([('name', 'yang'), ('age', 18)])
'''
6.循环
代码语言:javascript
复制
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for k, v in dic.items():  # items可以换成keys()、values()
    print(k, v)
#a 1
#b 2
#c 3
#d 4

2.慢慢掌握

1.get
代码语言:javascript
复制
和key取值有点类似区别就是取不到不会报错,但是不能用get来更换值
2.update
代码语言:javascript
复制
# dic之update()
dic1 = {'a': 1, 'b': 2}
dic2 = {'c': 3}#如果dic2与dic1中key有相同的,则不会增加新的key更新值,如果没有相同的则会添加key还有值
dic1.update(dic2)

print(f"dic1: {dic1}") 
#dic1: {'a': 1, 'b': 2, 'c': 3}       
3.fromkeys
代码语言:javascript
复制
# dic之fromkeys()
dic = dict.fromkeys(['name', 'age', 'sex'], None)
print(f"dic: {dic}")
#给目录赋予相同的值
4.setdefault
代码语言:javascript
复制
# dic之setdefault(),有指定key不会改变值;无指定key则改变值
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")

#dic.setdefault('a'): 1
#dic: {'a': 1, 'b': 2}
#dic.setdefault('c'): 3
#dic: {'a': 1, 'b': 2, 'c': 3}

4.需要记的单词

  1. get 获得
  2. update 更新
  3. fromkeys 生成一个字典,修改和添加
  4. setdefault 只添加不修改
  5. count 查找个数
  6. index 查找索引
  7. insert 具体某个位置插入
  8. pop 删除 能显示删除的值
  9. remove 删除 不能显示删除的值
  10. clear 清除元素
  11. copy 复制
  12. extend 延伸
  13. reverse 颠倒
  14. sort 排序

5.今日题目

1.有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量:

代码语言:javascript
复制
data=['alex',49,[1900,3,18]]
name,age,data_1 = data
year,month,day = data_1
print(name,age,year,month,day)
#####################
data=['alex',49,[1900,3,18]]
a,b,c = data
d,e,f = c
data = [a,b,d,e,f]
keys = ['姓名','年龄','年','月','日']
dic= {}
time = 0
while time < len(data):
    dic.setdefault(keys[time],data[time])
    time += 1
print(dic)

2.用列表模拟队列(最先进入列表的元素会先出来):

代码语言:javascript
复制
# 答案,通过该答案模仿写出第3题
lis = []

print(f"进队列前lis: {lis}")

# 进队列
for i in range(1, 6):
    lis.append(i)
    print(i)

print(f"结束进入队列lis: {lis}")

# 出队列
for i in range(len(lis)):
    print(lis.pop(0))
    
print(f"出队列后lis: {lis}")

1.用列表模拟堆栈(最后进入列表的元素会先出来):

代码语言:javascript
复制
new_lis = []
for i in range(1,6):
 new_lis.append(i)
new_lis.reverse()
print(new_lis)

2.有如下列表,请按照年龄排序(涉及到匿名函数):

代码语言:javascript
复制
lis=[
    {'name':'alex','age':84},
    {'name':'oldboy','age':73},
    {'name':'egon','age':18},
]

# 通过姓名排序参考(涉及匿名函数):

lis.sort(key=lambda item:item['name'])


lis.sort(key=lambda item:item['age'])
# 冒泡函数
lis = [
    {'name' : 'yang','age' : 6 },
    {'name' : 'wen','age'  : 3 },
    {'name' : 'yi','age'  : 1 }
]
for i in range(len(lis)):
    for j in range(i+1,len(lis)):
        if lis[i]['age'] >lis[j]['age']:
            lis[i],lis[j] = lis[j],lis[i]
print(lis)

1.有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将 小于 66 的值保存至第二个key的值中,结果为{'k1': 大于66的所有值, 'k2': 小于66的所有值}

代码语言:javascript
复制
k1_list = []
k2_list = []
new_dict = {'k1':k1_list,"k2":k2_list}
a = [11,22,33,44,55,66,77,88,99,90]
for i in a:
    if i >=66:
        k1_list.append(i)
    elif i < 66:
        k2_list.append(i)
print(new_dict)

2.统计s='hello jason tank tank jason sean say hello dsb dsb sb'中每个单词的个数,结果为`{'hello': 2, 'alex': 0, 'say': 1, 'sb': 1}

代码语言:javascript
复制
s='hello jason tank tank jason sean say hello dsb dsb sb'
hello_num = s.count('hello')
alex_num = s.count('alex')
sb_num = s.split().count('sb')
say_num = s.count('say')
new_dic = {'hello':hello_num,'alex':alex_num,'say':say_num,'sb':sb_num}
print(new_dic)
#{'hello': 2, 'alex': 0, 'say': 1, 'sb': 1}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.8自我总结
    • 1.列表类型内置算法
      • 1.必须掌握
      • 2.了解
      • 3,一个值或者多个值
      • 4.有序或者无序
      • 5.可变或者不可变
    • 2.元祖类型
      • 1.定义
      • 2.用法
    • 3.字典数据类型内置算法
      • 1.必须掌握
      • 2.慢慢掌握
    • 4.需要记的单词
      • 5.今日题目
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档