为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
初识Python_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • 由于dict是按key查找,所以在一个dict中,key不能重复

    查看全部
  • 正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:

    查看全部
  • tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

    查看全部
  • x这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 x,然后执行for循环体(就是缩进的代码块)。

    查看全部
    0 采集 收起 来源:Python之 for循环

    2019-10-30

  • 我们以自定义一个求绝对值的 my_abs 函数为例:

    def my_abs(x):
        if x >= 0:
            return x    else:
            return -x

    请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

    如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。

    return None可以简写为return。


    查看全部
  • 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):>>> range(1, 11)
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:>>> L = []>>> for x in range(1, 11):...    L.append(x * x)... >>> L[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:>>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

    查看全部
    0 采集 收起 来源:生成列表

    2019-10-30

  • 我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。首先,我们看看 dict 对象的 items() 方法返回的值:>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> print d.items()[('Lisa', 85), ('Adam', 95), ('Bart', 59)]可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:>>> for key, value in d.items():...     print key, ':', value... Lisa : 85Adam : 95Bart : 59和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

    查看全部
  • 我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。如果我们希望迭代 dict 对象的value,应该怎么做?dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.values()# [85, 95, 59]for v in d.values():    print v# 85# 95# 59如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.itervalues()# <dictionary-valueiterator object at 0x106adbb50>for v in d.itervalues():    print v# 85# 95# 59那这两个方法有何不同之处呢?1. values() 方法实际上把一个 dict 转换成了包含 value 的list。2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

    查看全部
    0 采集 收起 来源:迭代dict的value

    2019-10-30

  • Python中,迭代永远是取出元素本身,而非元素的索引。对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?方法是使用 enumerate() 函数:>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']>>> for index, name in enumerate(L):...     print index, '-', name... 0 - Adam1 - Lisa2 - Bart3 - Paul使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:['Adam', 'Lisa', 'Bart', 'Paul']变成了类似:[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]因此,迭代的每一个元素实际上是一个tuple:for t in enumerate(L):    index = t[0]    name = t[1]    print index, '-', name如果我们知道每个tuple元素都包含两个元素,for循环又可以进一步简写为:for index, name in enumerate(L):    print index, '-', name这样不但代码更简单,而且还少了两条赋值语句。可见,索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

    查看全部
    0 采集 收起 来源:索引迭代

    2019-10-30

  • 取一个list的部分元素是非常常见的操作。比如,一个list如下:>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    取前3个元素,应该怎么做?笨办法:>>> [L[0], L[1], L[2]]['Adam', 'Lisa', 'Bart']之所以是笨办法是因为扩展一下,取前N个元素就没辙了。取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:>>> r = []>>> n = 3>>> for i in range(n):...     r.append(L[i])... >>> r['Adam', 'Lisa', 'Bart']对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。对应上面的问题,取前3个元素,用一行代码就可以完成切片:>>> L[0:3]['Adam', 'Lisa', 'Bart']L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:>>> L[:3]['Adam', 'Lisa', 'Bart']也可以从索引1开始,取出2个元素出来:>>> L[1:3]['Lisa', 'Bart']只用一个 : ,表示从头到尾:>>> L[:]['Adam', 'Lisa', 'Bart', 'Paul']因此,L[:]实际上复制出了一个新list。切片操作还可以指定第三个参数:>>> L[::2]['Adam', 'Bart']第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。任务range()函数可以创建一个数列:>>> range(1, 101)[1, 2, 3, ..., 100]

    查看全部
    0 采集 收起 来源:对list进行切片

    2019-10-30

  • 在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。我们以自定义一个求绝对值的 my_abs 函数为例:def my_abs(x):    if x >= 0:        return x    else:        return -x请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。return None可以简写为return。

    查看全部
  • 由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:一是把新的元素添加到set中,二是把已有元素从set中删除。添加元素时,用set的add()方法:>>> s = set([1, 2, 3])>>> s.add(4)>>> print sset([1, 2, 3, 4])如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:>>> s = set([1, 2, 3])>>> s.add(3)>>> print sset([1, 2, 3])删除set中的元素时,用set的remove()方法:>>> s = set([1, 2, 3, 4])>>> s.remove(4)>>> print sset([1, 2, 3])如果删除的元素不存在set中,remove()会报错:>>> s = set([1, 2, 3])>>> s.remove(4)Traceback (most recent call last):  File "<stdin>", line 1, in <module>KeyError: 4所以用add()可以直接添加,而remove()前需要判断。

    查看全部
    0 采集 收起 来源:Python之 更新set

    2019-10-30

  • 我们已经能创建一个dict,用于表示名字和成绩的对应关系:d = {
        'Adam': 95,
        'Lisa': 85,
        'Bart': 59
    }
    那么,如何根据名字来查找对应的成绩呢?可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:>>> print d['Adam']95>>> print d['Paul']Traceback (most recent call last):  File "index.py", line 11, in <module>    print d['Paul']KeyError: 'Paul'注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。要避免 KeyError 发生,有两个办法:一是先判断一下 key 是否存在,用 in 操作符:if 'Paul' in d:    print d['Paul']如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:>>> print d.get('Bart')59>>> print d.get('Paul')None

    查看全部
    0 采集 收起 来源:Python之访问dict

    2019-10-30

  • tuple和list一样,可以包含 0 个、1个和任意多个元素。包含多个元素的 tuple,前面我们已经创建过了。包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示:>>> t = ()>>> print t()创建包含1个元素的 tuple 呢?来试试:>>> t = (1)>>> print t1好像哪里不对!t 不是 tuple ,而是整数1。为什么呢?因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:>>> t = (1,)>>> print t(1,)Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。多元素 tuple 加不加这个额外的“,”效果是一样的:>>> t = (1, 2, 3,)>>> print t(1, 2, 3)

    查看全部
  • tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。同样是表示班里同学的名称,用tuple表示如下:>>> t = ('Adam', 'Lisa', 'Bart')创建tuple和创建list唯一不同之处是用( )替代了[ ]。现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新同学没法直接往 tuple 中添加,老同学想退出 tuple 也不行。获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素,不信可以试试:>>> t[0] = 'Paul'Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support item assignment

    查看全部

举报

0/150
提交
取消
课程须知
如果您了解程序设计的基本概念,会简单使用命令行,了解中学数学函数的概念,那么对课程学习会有很大的帮助,让您学起来得心应手,快速进入Python世界。
老师告诉你能学到什么?
通过本课程的学习,您将学会搭建基本的Python开发环境,以函数为基础编写完整的Python代码,熟练掌握Python的基本数据类型以及list和dict的操作。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!