下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 18 | 列表推导式与字典推导式
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

零基础学Python

共71讲 · 71课时·约540分钟
16024
免费
01 | Python语言的特点
免费
02 | Python的发展历史与版本
免费
03 | Python的安装
免费
04 | Python程序的书写规则
免费
05 | 基础数据类型
免费
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与s...
46 | 正则表达式库替换函数sub...
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹...
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumP...
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代...
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式ge...
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链...
68 | Beautiful Soup的安装和...
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下...
71 | 如何分析源代码并设计合理...
本节摘要

课程源码、课件及课后作业地址:

https://github.com/wilsonyin123/geekbangpython

精选留言(20)

  • 2018-09-13
    您这个课件当中没有集合的章节啊,目前看到第19节。课后习题中有集合的作业
    3
  • 2018-06-13
    计算星座生肖统计时 定义字典 为什么把0 赋给字典中的元素啊

    作者回复: 后面调用了+=1的数学运算,如果不赋值0,字典的值无法参与数学运算

    2
  • 2019-02-22
    老师你的课程里没有讲集合这个概念啊

    作者回复: 集合是序列之一,它的特点就是无序且不重复,因为前面介绍了大量的基本数据类型和序列的操作,集合就没在视频里为大家演示,可以参考中文文档:http://www.pythondoc.com/pythontutorial3/datastructures.html#tut-sets
    使用集合要注意一点,集合没有切片操作,如set_type[0] 会报TypeError: 'set' object does not support indexing 错误。

    1
  • 2018-08-30
    终于可以全屏看了,感谢技术伙伴的夜以继日
    1
  • 2019-09-16
    老师,这种代码这样写只是为了代码简洁么
    感觉习惯了java的写法
  • 2019-06-24
    老师你好,我有个问题想请教你,for i in newread:
        if '[' in i :
            newread.remove(i)
        if 'Get' in i :
            qa.append(i)
            newread.remove(i)

    print(newread)
    print(qa)
    print(len(newread),len(qa))
    第一个if执行了一次就再也没执行过,怎么回事
    展开

    作者回复: elif 和 else 了解一下?

    两个if是独立的语句,但是从程序片段来看,明显是希望他们有关联,不知道我猜的是否对哈

    另外这段程序片段想做什么事情我并没有读懂,它的逻辑也需要再优化一下

  • 2019-05-29
    老师,GitHub上的知识图谱是xmind画的吗

    作者回复: 是的,也有在线绘制思维导图的工具

  • 2019-05-15
    i * i 也可以写成 i ** 2
    i * i * i 也可以写成 i ** 3
    ...
  • 2019-05-14
    列表:有序集合,定义时用 [ ]
    set:元素无序不重复集合,定义时用{ } / set()
    元组:定义时用( ),元组表示一组值,元组可以嵌套。
    字典:类似java的hash表,定义时用 { key: value }
  • 2019-05-14
    集合就是java的set,没啥好说的。看一下语法基本就会了。用了几个小时就看到19节了。立个flag 还是看完基础就行。
  • 2019-05-01
    老师,为什么alist = [] 写在for语句的下面后运行出来的列表里只有100?是次序不一样表达的一起就不一样吗?谢谢

    作者回复: 次序不同必然执行结果不同,对于我们初学程序,可以通过print()打印中间过程来了解程序运行过程

  • 2019-04-20
    哈哈
  • 2019-04-13
    上面定义的zodiac_name和zodiac_days这两个元组,在循环中为什么可以通过判断日期之后就能输出星座的?
  • 2019-03-24
    6 映射和集合 练习2

    str1 = 'hello'
    print(set(str1))

    输出结果是:{'e', 'l', 'h', 'o'}

    问题:为什么输出结果不是按照{'h','e','l','o'}的顺序来的?
    展开

    作者回复: 很细心, 首先set 和 dict 一样属于映射关系, 另外set的特点就是“不按顺序存储”,这也是这种结构和序列最主要的区别,set带来的好处也很明显,要比序列读取的速度更快

  • 老师你好,为什么在写推导式的时候,cz_num = {i:0 for i in chinese_zodiac}的时候,第一个 i 没有用单引号呢?

    作者回复: 你好,列表推导式的第一个i是变量名

  • 2018-12-19
    老师 我想问一下这个代码能不能通过字典推导式写出来
    我之前尝试了一下 完全不对 d = { k : v for k in 'zxcv' for v in (1,2,3,4) }
    想请老师帮忙看看

    dict_keys = ('z','x','c','v')
    dict_values = range(1,5)
    d = { }
    #设置一个字典里面的所有键
    for o in dict_keys:
        d.setdefault(o, )
    #更新字典里面所有键的值
    y = 0
    for x in dict_keys:
        d[x] = dict_values[y]
        y += 1
    print (d)
    ======================
    {'x': 4, 'c': 4, 'z': 4, 'v': 4}
    >>>

    展开

    作者回复: d_k = ('z','x','c','v')
    d_v = range(1,5)

    print(dict(zip(d_k,d_v)))

  • 2018-10-09
    #字典的使用练习
    dic={'a':'xx','b':'yy','c':'uu','d':'ii'}
    dic['c']='cake'
    print(dic)
    print(dic['d'])

    string1='hello'
    dic2={i for i in string1}
    print(dic2)

    #print(set(string1))
    展开
  • 2018-10-08
    运行程序报下列错误:
     cz_num[chinese_zodiac[year % 12]] += 1
    TypeError: unsupported operand type(s) for +=: 'set' and 'int

    作者回复: 这个错误提示很明确,在+=两边出现了不同的类型 set 和 int 它不支持这种操作。那为什么无法支持呢?我们可以把x += 1拆解成 x=x+1 这样的形式,其实不支持的操作是加号“+”;
    因为在python里,加号有两个功能,如果被用作算数运算符,就可以在整数、浮点数等数字之间做算术运算了,前提是两边都是数字。另一个用途是做字符串连接,当+两边类型不一致,计算机就不知道该如何处理了,所以报了错。
    上面这条语句,看看是否需要对cz_num 用int() float()这类数学函数强制转换一下再进行运算呢?

  • 2018-07-19
    薄弱基础学生,请教一个关于遍历的问题。
    在下面这一段代码里:
    zodiac_name = (.......)
     for i in zodiac_name:
           zodiac_num[i] = 0

    这里的i有初始值么,是从预定义的列表里的第一个值遍历到最后一个么?我理解python不需要预先定义就可以使用变量,但是难道不赋值的新变量是有初始值的么?谢谢回答。
    展开

    作者回复: 第一个问题,是的从zodiac_name依次取值
    第二个问题,在python中如果不对变量赋值是无法使用的,所以不存在初始值问题,但字典可以为空

  • 2018-06-12
    name_array=(name for name in zodiac_name)
    print(name_array)
    print(type(name_array))
    老师 我用推导式打印元组时出现如下结果
    <generator object <genexpr> at 0x0000023E106ED518>
    <class 'generator'>

    为什么不是输出元组里面的元素
    展开

    作者回复: generator类型叫做生成器对象,这种对象要用list()取出全部内容,即list(name_array) 或者使用name_array.__next__()方法取出每一个元素,且仅能取出一次。具体请参考25节 函数的迭代器与生成器