zoukankan      html  css  js  c++  java
  • Python基础(数据类型、编码、list、tuple、dict、set)-0

    一、数据类型和变量

    1. 如果字符串内部既包含'又包含"怎么办?可以用转义字符来标识。
    2. 如果字符串里面有很多字符都需要转义,就需要加很多,为了简化,Python还允许用r''表示''内部的字符串默认不转义。
    3. 如果字符串内部有很多换行,用 写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容。
    4. 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
    5. Python是动态语言,变量本身类型不固定。
    6. 常量通常使用大写字母表示。
    7. Python中有两种除法,一种是/,其计算结果是浮点数,即使两个整数恰好整除,结果也是浮点数;还有一种//,称为地板除,结果取整数,如果有一方是浮点数,那么结果就是浮点数。%是取余操作,结果是整数还是浮点数,取决于最后的除数和被除数的类型。以上和C语言有区别。
    8. 在Python中,可以把任何数据看成是一个对象,然后变量就是在过程中用来指向这些数据对象的。把变量赋值,就是把数据和变量关联起来。
    9. Python中整数的大小是没有限制的;浮点数的大小也没有限制,超出范围就是inf(无限大)。

    二、字符串和编码

    1. ASCII编码是一个字节,Unicode编码通常是两个字节。
    2. 本着节约的精神,出现了UTF-8,把Unicode字符根据不同的数字大小编码成1-6个字节。,通常英文是一个字节,汉字是3个字节。
    3. Python3中字符串是使用Unicode编码,提供ord() 函数获取字符的整数表示,chr() 函数把编码转换为对应的字符。
    Python中字符串
    1. Python中字符串类型是str,如果要网络传输,或保存到磁盘上就需要变为以字节为单位的bytes;Python对于bytes类型数据用带b前缀的单引号或双引号表示。
    2. 以Unicode表示的str通过encode()方法可以编码为指定的bytes;如果我们从网络或磁盘上读取了字节流,那么读取到的数据就是bytes。要把bytes变为str,就要使用decode()方法。如果bytes中存在一部分的无效字节,可以传入errors='ignore'忽略错误字节。
    3. 同时str包含多少字节可以使用len()函数。
    4. 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
    
    第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
    
    申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码:
    
    格式化
    1. 同C语言一样,使用%来进行格式化,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%。
    >>> 'Hello, %s' % 'world'
    'Hello, world'
    >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
    'Hi, Michael, you have $1000000.'
    
    占位符	替换内容
    %d	整数
    %f	浮点数
    %s	字符串
    %x	十六进制整数
    
    >>> print('%2d-%02d' % (3, 1)) 
     3-01
    >>> print('%.2f' % 3.1343) 
    3.13
    >>>
    
    1. 另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
    >>> print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.124)) 
    Hello, 小明, 成绩提升了 17.1%
    

    三、列表list和元组tuple

    list

    1. list是一个有序集合-[],可以随时添加和删除其中的元素,可以使用len()函数用来获取其中的个数。
    2. 索引是从0 开始的。也可以进行-1倒数开始。
    3. append()用于向list尾部追加元素。
    4. insert(index, 元素)插入到指定位置。
    5. pop()用于删除尾部元素。pop(i)为指定索引位置元素被删除。
    6. 其中list内部元素的数据类型可以不同。也可以包含list

    tuple

    1. 另一种有序列表叫元组tuple-(),和list非常相似,但是一旦初始化就不能够修改。
    2. 当定义一个tuple时其中的元素就必须被确认下来。
    3. 也可以定义一个空tuple,t = ()
    4. 如果定义一个只含一个元素的tuple时,必须在元素后加一个,t = (1, )。

    四、条件判断和循环

    1. 只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False
    2. input()读取用户的输入,但是注意input读取的是str的数据类型,不能直接和整数进行比较。
    3. Python中只有两种循环:
    1. 第一种依次将list或tuple中的每个元素迭代出来。
    names = ['a', 'sd', 'sda']
    for name in names:
        print(name)
        
    提供一个range()函数(前闭后开,从0开始),可以生成一个整数序列,再通过list()函数可以转换为list。
    >>> t = range(6) 
    >>> t
    range(0, 6)
    >>> t = list(range(6))
    >>> t
    [0, 1, 2, 3, 4, 5]
    >>>
    
    2. 第二种循环是while
    sum  = 0 
    n = 99
    while n > 0:
        sum += n
        n = n - 2
    print(sum)
    
    1. break 和 continue

    五、使用dict和set

    dict

    1. dict是Python中内置的字典,其他语言中称为map。
    2. 避免key不存在的错误,有两种办法,一种是in 判断key是否存在。还有就是通过get()方法,如果不存在返回None,或则自己指定value.
    'ruixi' in d
    d.get('ruixi')
    d.get('ruixi', -1)
    
    1. 删除一个key使用pop(key)方法,对应的值也会从dict中删除。
    2. 有几个特点:查找速度和插入速度极快,不会随着key的增加而变慢;但是需要大量内存,list与之相反。
    3. key不能使用可变量,list就是。

    set

    1. 和dict类似,也是一组key的集合,但是不存储value。同时key不能重复。key也不能使用可变量。list是可变量。
    2. 要创建一个set,需要提供一个list作为输入集合。 s = set([1, 2, 3]),不能再tuple中嵌套list
    3. 使用add(key),添加元素,remove(key),用于移除元素。
    >>> a = {'a':(1, 2, 3), 'b':(1, [2, 3])}
    >>> a
    {'a': (1, 2, 3), 'b': (1, [2, 3])}
    >>> a['a'] 
    (1, 2, 3)
    >>> a['b'] 
    (1, [2, 3])
    >>>
    KeyboardInterrupt
    >>> a = {(1, 2, 3)}
    >>> a
    {(1, 2, 3)}
    >>> a = {(1, [2, 3])}
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    >>> a = set((1, [2, 3]))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    >>> a = set((1, 2, 3))   
    >>> a
    {1, 2, 3}
    >>> a = set([2, 3])
    >>> a
    {2, 3}
    

    不变对象

    • 所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Microsoft Visual Studio 产品密钥
    ActiveReport 9手把手搭建环境及实战
    TFS 用户与组管理(转)
    FTS下载地址
    URLScan安装及配置(转)
    viewstate加密(转)
    .net 网站发布 Web.Config中的<compilation debug="true"/>
    WebDAV被启用(转)
    js字母大小写转换
    限制同一个用户在同一时间只能登陆一次(转)
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12542407.html
Copyright © 2011-2022 走看看