5.8自我总结

1.列表类型内置算法

1.必须掌握

1.按索引取值(正向取值+反向取值),即可存也可以取

#用于取其中一个值
name = ['yang','wen','yi']
##正方向取wen,也就是从左到右
pritn(name[1])
##正方向取wen,也就是从右到左
print(name[-2])

2.切片

#用于取多个值
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

#用于长度3
name = ['yang','wen','yi']
print(len(name))

4.成员运算in和not in

#用于判断有误值在里面
name = ['yang','wen','yi']
print('wennnn' in name) #False
print('wen' in name) #True

5.追加append

#只加在最后
name = ['yang','wen','yi']
print(name.append(22)) #None
print(name) #['yang', 'wen', 'yi', 222]

6.删除del

name = ['yang','wen','yi']
#删除wen
del name[1]

7.循环

name = ['yang','wen','yi']
for i in name:
print(i)
#yang
#wen
#yi

2.了解

1.insert

name_list = ['nick', 'jason', 'tank', 'sean']
name_list.insert(1, 'handsome') #加入后那个值的位置,加入的值
print(f"name_list: {name_list}")

2.pop

# 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

# list之remove() 删除一个元素
name_list = ['nick', 'jason', 'tank', 'sean'] print(f"name_list.remove('nick'): {name_list.remove('nick')}") #会输出None

4.count

# 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

name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.copy(): {name_list.copy()}")

8.extend

# 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

# 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

# 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存取值:可存可取

dict = {'name':'yang','age':18}
#取 姓名
dict[name]

2.长度len

dict = {'name':'yang','age':18}
#取 长度
len(dict)

3.成员运算in和not in

判断有无key而不是值

4.删除del

dict = {'name':'yang','age':18}
#删除名字
dal dict[name]

5.键keys()、值values()、键值对items()

#演示即可
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.循环

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

和key取值有点类似区别就是取不到不会报错,但是不能用get来更换值

2.update

# 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

# dic之fromkeys()
dic = dict.fromkeys(['name', 'age', 'sex'], None)
print(f"dic: {dic}")
#给目录赋予相同的值

4.setdefault

# 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]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量:

    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. 用列表模拟队列(最先进入列表的元素会先出来):

# 答案,通过该答案模仿写出第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. 用列表模拟堆栈(最后进入列表的元素会先出来):

    new_lis = []
    for i in range(1,6):
    new_lis.append(i)
    new_lis.reverse()
    print(new_lis)
  2. 有如下列表,请按照年龄排序(涉及到匿名函数):

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的所有值}

    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}

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}

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

  1. Python eval() 的使用:将字符串转换为列表,元祖,字典

    eval() 函数用来执行一个字符串表达式,并返回表达式的值. 语法 以下是 eval() 方法的语法: eval(expression[, globals[, locals]]) 参数 expres ...

  2. Python基础-列表、元祖、字典、字符串

    列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每 ...

  3. python学习-day12:列表、元祖、字典介绍和内置

    list:列表 >>>----可以被修改.修改成元素,元素可以使单独的数字,也可以是:新的list. 通过:链表..每个元素存储的时候,同时会指向下一个元素. 二.list编辑修改方 ...

  4. 【Python基础学习五】列表,元祖,字典

    1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...

  5. Python基础(3)_可变对象与不可变对象、列表、元祖和字典

    可变对象与不可变对象 实例被创建后,身份和类型是不可变的, 如果值是不可以被修改的,则是不可变对象 如果值是可以被修改的,则是可变对象 #在id不动,type也不动,value被修改了,则称为可变 # ...

  6. python列表、元祖、字典

    python列表   ['a','1','vs2']       里面的值可以改 python元祖   ('a','1','css','sdf12')   里面的值不能改 python字典   {'s ...

  7. Python——列表、元祖、字典 操作方法

    一.编码方式占位 1.ASCII码:字母.数字.特殊字符,1个字节占8位 2.Unicode:字母 2字节占16位  /  中文 4字节 占32位 3.UTF8:字母 1字节占8位 / 欧洲 2字节占 ...

  8. python,列表,元祖,字典

    list 列表 li = [1,",[3,4]] 1.用中括号括起来 2.用,来分割每一个元素 3.列表中的元素可以是,数字,字符串,列表,布尔值 4.“集合”,内部可以放置任何东西 li ...

  9. python基础--列表、元祖、字典、集合

    列表(List) 1.列表特点 列表是可变的!! list 是一种有序的序列,可以添加.删除其中的元素,并且可以通过下标(索引)访问 数据 2.简单的常用操作 A.通过下表访问元素 print(lis ...

  10. Python——列表、元祖、字典、集合的基本操作

    列表 1. 列表——增 (1)append li = ['xcsd', 'cdc', [1, 5, 2], 'eht', '辛辰'] li.append('nihao') print(li) #['x ...

随机推荐

  1. 如何使用Tomcat自带的日志实现tomcat-juli.jar

    前言 Tomcat自带的日志实现是tomcat-juli.jar,它是对默认的JDK日志java.util.logging进行一定的封装,和标准JDK日志支持相同的配置,但是和log4j等常用的日志框 ...

  2. django 之 rest framework

    一 二 三 四 五 六 七 八

  3. java算法之冒泡排序

    所有的冒泡排序算法都是一样的: 冒泡排序可以分为两种情况: 一种是将无序序列排序为由小到大的升序方式: 另一种情况是将无序序列转化成一种由大到小的降序排列:

  4. Macbook上sublime的C++11弥补bits/stdc++.h的配置

    如果在windows配置过的话这次会容易很多.相关博客很多了,我这里保存一下我借鉴并成功的配置: 关于自己build的C++,文件类型为sublime-build,直接扔在它给出的user文件夹即可, ...

  5. Azkaban的功能特点(二)

    Azkaban是什么?(一) 不多说,直接上干货! http://www.cnblogs.com/zlslch/category/938837.html Azkaban的功能特点 它具有如下功能特点: ...

  6. Java方式配置Spring MVC

    概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...

  7. 内存泄露,C++

    内存泄露,C++通常是指new出来的内存没有delete掉.在你的代码里边,new了一块内存,然后马上就delete,自然就没有内存泄露了(呃……其实我也不确定啦,因为你用的是delete,而不是de ...

  8. Android recyclerview 只显示一行 宽度不适配

    最近学习recyclerview 遇到的问题 1.宽度不适配 正确写法 LayoutInflater.from(context).inflate(R.layout.item_view,parent,f ...

  9. iOS 通知、本地通知和推送通知有什么区别? APNS机制。

    本地/推送通知为不同的需要而设计.本地通知对于iPhone,iPad或iPod来说是本地的.而推送通知——来自于设备外部.它们来自远程服务器——也叫做远程通知——推送给设备上的应用程序(使用APNs) ...

  10. 51nod 1283 最小周长

    一个矩形的面积为S,已知该矩形的边长都是整数,求所有满足条件的矩形中,周长的最小值.例如:S = 24,那么有{1 24} {2 12} {3 8} {4 6}这4种矩形,其中{4 6}的周长最小,为 ...