python持续学习中(1)

本文介绍了Python的基础知识,包括ipython的magic命令、列表推导式、类的定义与使用、常用数据类型如字符串、列表、元组、字典和集合的操作。还涉及到了函数、模块的使用,以及条件语句、循环语句等控制结构。文章强调了Python面向对象的特性,以及在实际编程中的一些最佳实践。
摘要由CSDN通过智能技术生成

学习——李金python笔记

  1. ipython解释器提供了很多以百分号%开头的magic命令:%cd demo_test/;
    使用 ? 查看函数的帮助:sum?;
    可以使用 ! 来执行一些系统命令。

  2. Python中有一种叫做列表推导式(List comprehension)的用法:
    numbers = [int(field) forfield in fields]
    out:numbers [1, 2, 3, 4, 5]
    sum(numbers)
    写在一行:sum([int(field) for field in line.split()])

  3. 类 Class
    用class来定义一个类。 Person(object)表示继承自object类; __init__函数用来初始化对象; self表示对象自身,类似于C Java里面this。
    class Person(object):
    def init(self, first, last, age):
    self.first = first
    self.last = last
    self.age = age
    def full_name(self):
    return self.first + ’ ’ + self.last

    构建新对象:
    person = Person(‘Mertle’, ‘Sedgewick’, 52)

    调用对象的属性:
    person.first
    out:‘Mertle’
    调用对象的方法:
    person.full_name()
    out:‘Mertle Sedgewick’
    修改对象的属性:
    person.last = ‘Smith’

  4. python常见数据类型List item

  5. ** 幂指数运算 例:3**4=81

  6. / // % 除,整数除法,取余运算

  7. 取整round(21.6)=22

  8. 不要用内置的函数来命名变量

  9. Python支持链式比较:0.1 < 0.2 <0.3 True

  10. Python是一种面向对象的语言,面向对象的语言中一个必不可少的元素就是方法,而字符串是对象的一种,所以有很多可用的方法。
    跟很多语言一样,Python使用以下形式来调用方法:对象.方法(参数)

  11. Python用字符串的format()方法来格式化字符串。
    具体用法\字符串中花括号 {} 的部分会被format传入的参数替代,传入的值可以是字符串,也可以是数字或者别的对象。
    可以用数字指定传入参数的相对位置:’{2} {1} {0}’.format(‘a’, ‘b’, ‘c’) out=‘c b a
    指定传入参数的名称:’{color} {0} {x} {1}’.format(10, ‘foo’, x = 1.5, color=‘blue’)
    out=‘blue 10 1.5 foo’
    也可以使用旧式的 % 方法进行格式化:
    s = “some numbers:”
    x = 1.34
    y = 2
    t = “%s %f, %d” % (s, x, y)
    out(t):‘some numbers: 1.340000, 2’

  12. 与字符串不同的是,列表可以通过索引和分片来修改。
    对于字符串,如果我们通过索引或者分片来修改,Python会报错

  13. 列表可以通过以下的方法改变,而字符串不支持这样的变化。
    a = [1, 2, 3, 4]
    b = a
    此时, a 和 b 指向同一块区域,改变 b 的值, a 也会同时改变:
    b[0] = 100,则a=[100, 2, 3, 4]
    字符串与整数浮点数一样被认为是基本类型,而基本类型在Python中是不可变的。

  14. 与列表相似,元组Tuple也是个有序序列,但是元组是不可变的,用()生成。可以索引,切片,但是元组是不可变的但是元组是不可变的.将列表转换为元组:tuple(a)
    为什么需要元组:旧式字符串格式化中参数要用元组;在字典中当作键值;数据库的返回值……
    元组的生成速度要比列表的生成速度快得多,相差大概一个数量级,索引速度差不多

  15. 字典没有顺序,Python中不能用支持用数字索引按顺序查看字典中的值,而且数字本身也有可能成为键值,Python中要求键值对的键必须是不可变的,而值可以是任意的Python对象。
    #定义四个字典
    e1 = {‘mag’: 0.05, ‘width’: 20}
    e2 = {‘mag’: 0.04, ‘width’: 25}
    e3 = {‘mag’: 0.05, ‘width’: 80}
    e4 = {‘mag’: 0.03, ‘width’: 30}
    #以字典作为值传入新的字典
    events = {500: e1, 760: e2, 3001: e3, 4180: e4}
    在不可变类型中,整数和字符串是字典中最常用的类型;而浮点数通常不推荐用来做键(因为浮点数的精度问题)有时候,也可以使用元组作为键值,元组是有序的,因此 (‘New York’, ‘Austin’) 和 (‘Austin’, ‘New York’) 是两个不同的键
    索引不存在的键值会报错,改用get方法a.get(“three”),就会输出None
    可以通过索引来插入、修改单个键值对,但是如果想对多个键值对进行操作,这种方法就显得比较麻烦,有 update 方法
    person_modifications = {‘first’: ‘James’, ‘middle’: ‘Clerk’}
    person.update(person_modifications)

  16. 集合:之前看到的列表和字符串都是一种有序序列,而集合 set 是一种无序的序列。
    因为集合是无序的,所以当集合中存在两个同样的元素的时候,Python只会保存其中的一个(唯一性);同时为了确保其中不包含同样的元素,集合中放入的元素只能是不可变的对象(确定性)。
    将seq中的元素添加到s中。
    也可以使用一个列表来初始化一个集合:a = set([1, 2, 3, 1]) out:a={1, 2, 3}
    集合中的元素是用大括号{}包含起来的,这意味着可以用{}的形式来创集合.(也可以用set{},创建空集合只能用set),集合的并交差操作| & -,a ^ b 实现(异或操作符):a 和b 的对称差集,返回在 a 或在 b 中,但是不同时在 a 和 b 中的元素组成的集合。s.add(a):为集合添加元素;列表的extend方法类似,s.update(seq)用来向集合添加多个元素。a.difference_update(b)从a中去除所有属于b的元素;t.discard(20),作用与 remove 一样,但是当元素在集合中不存在的时候不会报错。

  17. 不可变集合:对应于元组(tuple)与列表(list)的关系,对于集合(set),Python提供了一种叫做不可变集合(frozen set。与集合不同的是,不可变集合一旦创建就不可以改变。不可变集合的一个主要应用是用来作为字典的键

  18. else语句:与 if 一样, while 和 for 循环后面也可以跟着 else 语句,不过要和break一起连用。
    当循环正常结束时,循环条件不满足, else 被执行;
    当循环被 break 结束时,循环条件仍然满足, else 不执行

  19. 列表推导式:列表推导式可以使用比循环更简单的方法来创建列表。total = sum([x2 for x in values if x <= 10])和total = sum(x2 for x in values if x <= 10)相比会先生成列表再计算浪费了资源。也可以使用推导式生成集合和字典

  20. 函数:可以接收不定参数,*args 表示参数数目不定,可以看成一个元组,把第一个参数后面的参数当作元组中的元素;**kwargs 表示参数数目不定,相当于一个字典,关键词和值对应于键值对。可以返回多个值,事实上,Python将返回的多个值变成了元组,不仅仅返回值可以用元组表示,也可以将参数用元组以这种方式传入
    def add(x, y)
    z = (2, 3)
    print add(*z) 这里的星号必不可少。
    还可以通过字典传入参数来执行函数:
    w = {‘x’: 2, ‘y’: 3}
    print add(**w)

  21. map 方法生成序列:map(aFun, aSeq)
    将函数 aFun 应用到序列 aSeq 上的每一个元素上,返回一个列表,不管这个序列原来是什么类型。
    def add(x, y):
    return x + y
    a = (2,3,4)
    b = [10,5,3]
    print map(add,a,b)
    out:[12, 8, 7]

  22. 模块:Python会将所有 .py 结尾的文件认定为Python代码文件

  23. %%writefile ex1.py

    Overwriting ex1.py
    可以通过%run ex1.py执行它,并将它作为模块引入用import,可以用ex1.函数名
    调用模块里面的函数

  24. name 属性:有时候想将一个 .py 文件既当作脚本,又能当作模块用,这个时候可以使用 name 这个属性。

只有当文件被当作脚本执行的时候, __name__的值才会是 ‘main

1.数据类型分类:
列表是可变的(Mutable)字符串是不可变的(Immutable)

可变数据类型不可变数据类型
list, dictionary, set, numpy array, user defined objectsinteger, float, long, complex, string, tuple, frozenset
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值