zoukankan      html  css  js  c++  java
  • python编程从入门到实践——读书笔记(一)

    1列表

    本章节中例子列表为: motorcycles = ['honda', 'yamaha', 'suzuki']

    1.1从列表中删除元素

    1.1.1按位置删除

    •  del语句

        del motorcycles [x] #x为列表元素索引值

    • pop()方法

        popped_motorcycle = motorcycles.pop(x) #方法pop()可删除列表末尾的元素,并让你能够接着使用它。x仍为元素索引值

    1.1.2按值删除

    motorcycles.remove(value) #value为列表中的某个值

    注:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

    1.2列表排序

    motorcycles.sort() #永久排序

    如果你要按与字母顺序相反的顺序显示列表,可向函数sort()传递参数reverse=True

    sorted(motorcycles) #临时排序,也可传递参数reverse=True

    motorcycles.reverse()  #反转列表元素的排列顺序

    len(motorcycles) #获取列表长度

    1.3操作列表

    1.3.1list()方法转换为列表

    for value in range(1,5):

       print(value) #打印1~4

    list(range(1,6)) #转为列表

    1.3.2列表解析

    语法:

      [expression for iter_val in iterable]

      [expression for iter_val in iterable if cond_expr]

    例子:

      lista=[x+10 for x in range(101) if x%2==0]

    1.3.3切片

    负数索引返回离列表末尾相应距离的元素,如 'suzuki'=motorcycles[-1]

    1.3.4复制列表

    list_copy=list[ : ] #这种方式会变成两个列表

    list_copy=list #这种语法实际上是让Python将新变量friend_foods关联到包含my_foods中的列表,因此这两个变量都指向同一个列表。即操作任意一个,另一个也会被改。

    1.3.5元组

    元组是不可改的列表,使用()表示。

    虽然不能修改元组的元素,但可以给存储元组的变量赋值。例如:

    dimensions = (200, 50)

    dimensions = (400, 100)

    2if语句

    Python title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。

    Python并不要求if-elif结构后面必须有else代码块。

    if lista: #lista不为空返回True

    3字典

    alien_0 = {'color': 'green', 'points': 5}

    print(alien_0['color'])

    alien_0['x_position'] = 0 #添加值对

    注意:键值对的排列顺序与添加顺序不同。Python不关心键值对的添加顺序,而只关心键和值之间的关联关系。

    alien_0['color'] = 'yellow' #修改值对

    del alien_0['points'] #删除值对

    3.1遍历字典

    user_0 = {

    'username': 'efermi',

    'first': 'enrico',

    'last': 'fermi',

    }

    for key, value in user_0.items()  #对于这两个变量,可使用任何名称。

    注意,即便遍历字典时,键值对的返回顺序也与存储顺序不同。Python不关心键值对的存储顺序,而只跟踪键和值之间的关联关系。

    3.1.1遍历字典中的所有键

    user_0 .keys()

    遍历字典时,会默认遍历所有的键,因此,如果将for name in favorite_languages.keys():替换为for name in favorite_languages:,输出将不变。

    3.1.2顺序遍历字典中的所有键

    favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }
    for name in sorted(favorite_languages.keys()):
      print(name.title() + ", thank you for taking the poll."
    

    3.1.3遍历字典中的所有值

    favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }
    print("The following languages have been mentioned:")
    for language in favorite_languages.values():
      print(language.title())
    

    这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的:

    favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }
    print("The following languages have been mentioned:")
    for language in set(favorite_languages.values()):
      print(language.title()
    

    3.2嵌套

    字典列表、字典中存储列表、字典中存储字典

    4while循环

    要立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。

    continue是忽略该语句后面的语句,返回到循环开头。

    5函数

    5.1传递列表

    将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。

    如果不想修改原列表,可向函数传递列表的副本,比如:function_name(list_name[:])

    5.2传递任意数量的实参

    def funciton(*toppings)

    形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。函数体内的print语句通过生成输出来证明Python能够处理使用一个值调用函数的情形,也能处理使用三个值来调用函数的情形。它以类似的方式处理不同的调用,注意,Python将实参封装到一个元组中,即便函数只收到一个值也如此。

    注意:如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

    5.2.1使用任意数量的关键字实参

    有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键值对——调用语句提供了多少就接受多少。一个这样的示例是创建用户简介:你知道你将收到有关用户的信息,但不确定会是什么样的信息。在下面的示例中,函数build_profile()接受名和姓,同时还接受任意数量的关键字实参:

    def build_profile(first, last, **user_info):
        """创建一个字典,其中包含我们知道的有关用户的一切"""
        profile = {}
        profile['first_name'] = first
        profile['last_name'] = last
        for key, value in user_info.items():
            profile[key] = value
            return profile
    user_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
    print(user_profile)
    

     函数build_profile()的定义要求提供名和姓,同时允许用户根据需要提供任意数量的名称值对。形参**user_info中的两个星号让Python创建一个名为user_info空字典,并将收到的所有名称值对都封装到这个字典中。在这个函数中,可以像访问其他字典那样访问user_info中的名称值对。build_profile()的函数体内,我们创建了一个名为profile的空字典,用于存储用户简介。在处,我们将名和姓加入到这个字典中,因为我们总是会从用户那里收到这两项信息。在处,我们遍历字典user_info中的键值对,并将每个键值对都加入到字典profile中。最后,我们将字典profile返回给函数调用行。

    5.3将函数存储在模块中

    5.3.1导入整个模块

    要让函数是可导入的,得先创建模块。模块是扩展名为.py的文件,包含要导入到程序中的代码。

    pizza.py

    def make_pizza(size, *toppings):    
    """概述要制作的比萨"""    
        print("
    Making a " + str(size) + "-inch pizza with the following toppings:")    
        for topping in toppings:        
            print("- " + topping)       
    

     making_pizzas.py

    import pizza
    pizza.make_pizza(16, 'pepperoni') 
    pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
    

     Python读取这个文件时,代码行import pizzaPython打开文件pizza.py,并将其中的所有函数都复制到这个程序中。你看不到复制的代码,因为这个程序运行时,Python在幕后复制这些代码。你只需知道,在making_pizzas.py中,可以使用pizza.py中定义的所有函数。

    5.3.2导入特定的函数

    你还可以导入模块中的特定函数,这种导入方法的语法如下:from module_name import function_name

    通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:from module_name import function_0, function_1, function_2

    from pizza  import make_pizza
    make_pizza(16, 'pepperoni')
    

     5.3.3使用as给函数指定别名给函数指定别名

    下面给函数make_pizza()指定了别名mp()。这是在import语句中使用make_pizza as mp实现的,关键字as将函数重命名为你提供的别名:

    from pizza  import make_pizza as mp
    mp(16, 'pepperoni')
    mp(12, 'mushrooms', 'green peppers', 'extra cheese')
    

    5.3.4使用as给模块指定别名给模块指定别名

    import  pizza  as  p
    p.make_pizza(16, 'pepperoni')
    p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
    

    5.3.5导入模块中的所有函数

    使用星号(*)运算符可让Python导入模块中的所有函数:

    1 """此处作讲解,实际中不建议这样写。原因见下文"""
    2 from pizza import *
    3 make_pizza(16, 'pepperoni')
    4 make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

      import语句中的星号让Python将模块pizza中的每个函数都复制到这个程序文件中。由于导入了每个函数,可通过名称来调用每个函数,而无需使用句点表示法。然而,使用并非自己编写的大型模块时,最好不要采用这种导入方法:如果模块中有函数的名称与你的项目中使用的名称相同,可能导致意想不到的结果:Python可能遇到多个名称相同的函数或变量,进而覆盖函数,而不是分别导入所有的函数。最佳的做法是,要么只导入你需要使用的函数,要么导入整个模块并使用句点表示法这能让代码更清晰,更容易阅读和理解。

  • 相关阅读:
    HTC(G13)野火A510e获取root权限详细图文教程
    aliyun的linux服务器配置
    js判断是否为数字, 是否为整数, 是否为浮点数
    帝国cms管理员帐号、登陆密码、登陆认证码、登陆安全答案忘记了怎么办?
    帝国cms后台登陆出现空白页的问题所在及解决方法
    jQuery1.4.2与json格式兼容问题
    [IoC容器Unity]第四回:使用范例
    [IoC容器Unity]第二回:Lifetime Managers生命周期
    [Scheduled Timer]第八回:总结
    [设计模式原则]第五回:迪米特原则
  • 原文地址:https://www.cnblogs.com/lwy276701865/p/15029074.html
Copyright © 2011-2022 走看看