python基础(二)

2020-01-28  本文已影响0人  pigdaqiang

python变量赋值
常量 不变化的量,比如数字,字符串都是
变量 存储常量,通常由变量名指出
赋值 就是将一个常量指向一个变量
name = 'while'
python是一门弱变量的语言,所用变量即用即生成,变量的类型随着值的类型的修改而修改
命名可用的内容
字母
数字
下划线

1. 数字不可以开头,也不可以纯数字
2. __开头代表私有
3. __name__代表魔术方法
4. 关键字不可以用于命名
>>>import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 
'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 
'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 
'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
5. 命名要有意义,禁止无意义的命名,比如,a,a1,bb
常见的命名
名词
    name = 1
动宾结构
    get page = 1
    getPage = 1
    GetPage = 1
变量赋值的三种方式:
传统赋值
    name = 'while'
链式赋值
    name = user = 'while'
序列解包赋值
    name,age = 'while',10
>>> name = 'while'
>>> name
'while'
>>> name = user = 'while'
>>> name,user
('while', 'while')
>>> name,age = 'shuai',18
>>> name,age
('shuai', 18)
>>> hello       变量不存在
Traceback (most recent call last):
 File "<pyshell#14>", line 1, in <module>
 hello
NameError: name 'hello' is not defined
>>> name,age = 'shuai',18,00        变量和常量不对应
Traceback (most recent call last):
 File "<pyshell#15>", line 1, in <module>
   name,age = 'shuai',18,00
ValueError: too many values to unpack (expected 2)

python列表
列表是一个元素以逗号分割,以中括号包围的,有序的,可修改的序列
python2
1、list
2、[]
3、range
4、xrange
python3
1、list
>>> list('abced')
['a', 'b', 'c', 'e', 'd']
>>> str(['a','b','c','d'])
"['a', 'b', 'c', 'd']"
>>> ''.join(['a','b','c'])
'abc'
2、[]
>>> ['a',1,[1,'a']]
['a', 1, [1, 'a']]
3、range
>>> range(100)
range(0, 100)
>>> list(range(100))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> print(range(100))
range(0, 100)
列表的索引
列表的索引和字符串的索引类似,但不完全相同,因为列表可以修改,所以我们可以通过列表
的索引来修改列表
一样的部分

>>> mylist = [1,2,3,45,6]
>>> mylist
[1, 2, 3, 45, 6]
>>> mylist1 = list('123456')
>>> mylist1
['1', '2', '3', '4', '5', '6']
>>> mylist[1]
2
>>> mylist[-1]
6
>>> mylist[:]
[1, 2, 3, 45, 6]
>>> mylist1[::2]
['1', '3', '5']
>>> mylist1[5:1:-1]
['6', '5', '4', '3']
>>> mylist1[1] = 's'
>>> mylist1
['1', 's', '3', '4', '5', '6']
超出索引范围
    >>> mylist1[100]
    Traceback (most recent call last):
      File "<pyshell#38>", line 1, in <module>
        mylist1[100]
    IndexError: list index out of range

列表的方法
    
    列表的添加   
        append  追加,在列表的尾部加入指定的元素
        extend  将指定序列的元素依次追加到列表的尾部
        insert  将指定的元素插入到对应的索引位上,注意负索引
    列表的删除   
        pop 弹出,返回并删除指定索引位上的数据,默认-1
        remove  从左往右删除一个指定的元素
        del 删除是python内置功能,不是列表独有的
    列表的查找
    注 列表没有find方法    
        count   计数,返回要计数的元素在列表当中的个数
        index   
        查找,从左往右返回查找到的第一个指定元素的索引,如果没有找到,报错
    列表的排序   
        reverse 索引顺序倒序
        sort    按照ascii码表顺序进行排序

    append      列表末尾添加
>>> mylist = list('1a23456')
>>> mylist
['1', 'a', '2', '3', '4', '5', '6']
>>> mylist.append('a')
>>> mylist
['1', 'a', '2', '3', '4', '5', '6', 'a']
>>> mylist.append([123])
>>> mylist
['1', 'a', '2', '3', '4', '5', '6', 'a', [123]]
>>> mylist.append('[123]')
>>> mylist
['1', 'a', '2', '3', '4', '5', '6', 'a', [123], '[123]']
extend      将序列直接添加到末尾
>>> mylist = list('123456')
>>> mylist
['1', '2', '3', '4', '5', '6']
>>> mylist.extend('123')
>>> mylist
['1', '2', '3', '4', '5', '6', '1', '2', '3']

insert      将元素直接添加到指定位置
>>> mylist.insert('a',0)    注意顺序
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    mylist.insert('a',0)
TypeError: 'str' object cannot be interpreted as an integer
>>> mylist.insert(0,'a')
    pop  默认弹出最后一个位置,可以指定弹出的元素
        >>> mylist
        ['a', '1', '2', '3', '4', '5', '6', '1', '2', '3']
        >>> mylist.pop()
        '3'
        >>> mylist
        ['a', '1', '2', '3', '4', '5', '6', '1', '2']
        >>> mylist.pop()
        '2'
        >>> mylist
        ['a', '1', '2', '3', '4', '5', '6', '1']
        >>> list(mylist)
        ['a', '1', '2', '3', '4', '5', '6', '1']
        >>> mylist.pop(0)   弹出指定位置的元素
        'a'

    remove  从左往右删除指定的元素,一次删除一个
        >>> mylist
        ['1', '2', '3', '4', '5', '6', '1']
        >>> mylist.remove(1)
        Traceback (most recent call last):
          File "<pyshell#63>", line 1, in <module>
            mylist.remove(1)
        ValueError: list.remove(x): x not in list
        >>> mylist.remove('1')
        >>> mylist
        ['2', '3', '4', '5', '6', '1']

    del     删除指定位置的元素
        >>> del mylist[1]
        >>> mylist
        ['2', '4', '5', '6', '1']
        >>> del mylist[0]
        >>> mylist
        ['4', '5', '6', '1']
        >>> del mylist('1')
        SyntaxError: can't delete function call
        >>> del mylist
        >>> mylist
        Traceback (most recent call last):
          File "<pyshell#72>", line 1, in <module>
            mylist
        NameError: name 'mylist' is not defined
    
    count   寻找指定元素的个数  #注意list方法和[]这个的区别
     一个是字符串一个是数字 使用函数的方法也不一样
        >>> mylist = list('12345')
        >>> mylist
        ['1', '2', '3', '4', '5']
        >>> mylist.count(0)
        0
        >>> mylist.count(1)
        0
        >>> mylist.count(2)
        0
        >>> mylist = list('1234566')
        >>> mylist
        ['1', '2', '3', '4', '5', '6', '6']
        >>> mylist.count(6)
        0
        >>> mylist.count('6')
        2
        >>> mylist = [1,2,3,4]
        >>> mylist.count(1)
        1
        >>> mylist
        [1, 2, 3, 4]
    
    index   从左往右寻找指定元素的索引,第一个元素
        >>> mylist
        [1, 2, 3, 4]
        >>> mylist.index(1)
        0
        >>> mylist.index(2)
        1
        >>> mylist.index(3)
        2
        >>> mylist = list('1234')
        >>> mylist.index('1')
        0
        >>> mylist.index(1)
        Traceback (most recent call last):
          File "<pyshell#93>", line 1, in <module>
            mylist.index(1)
        ValueError: 1 is not in list
    
    reverse     按照索引顺序进行倒序
        >>> mylist
        ['1', '2', '3', '4']
        >>> mylist.reverse()
        >>> mylist
        ['4', '3', '2', '1']
        >>> mylist = list('dadgasgreaghfdah')
        >>> mylist
        ['d', 'a', 'd', 'g', 'a', 's', 'g', 'r', 'e', 'a', 'g', 'h', 'f', 
        'd', 'a', 'h']
        >>> mylist.reverse()
        >>> mylist
        ['h', 'a', 'd', 'f', 'h', 'g', 'a', 'e', 'r', 'g', 's', 'a', 'g', 
        'd', 'a', 'd']

    sort    直接按照ascii码排序,不能数字和字符一起排序
        >>> mylist
        ['h', 'a', 'd', 'f', 'h', 'g', 'a', 'e', 'r', 'g', 's', 'a', 'g', 'd', 'a', 'd']
        >>> mylist.sort()        
        >>> mylist
        ['a', 'a', 'a', 'a', 'd', 'd', 'd', 'e', 'f', 'g', 'g', 'g', 'h', 'h', 'r', 's']
        >>> mylist = [1,2,3,4]
        >>> mylist.sort()
        >>> mylist
        [1, 2, 3, 4]
        >>> mylist = [1,'a',2,3]
        >>> mylist
        [1, 'a', 2, 3]
        >>> mylist.sort()
        Traceback (most recent call last):
          File "<pyshell#109>", line 1, in <module>
            mylist.sort()
        TypeError: '<' not supported between instances of 'str' and 'int'
        >>> mylist = [1,2,3,'1']
        >>> mylist.sort()
        Traceback (most recent call last):
          File "<pyshell#111>", line 1, in <module>
            mylist.sort()
        TypeError: '<' not supported between instances of 'str' and 'int'

python元组
元组是元素以逗号分割,以小括号包围的有序的,不可修改的序列
tuple()
构建元组的方法

    >>> mytuple = tuple('12345')
    >>> mytuple
    ('1', '2', '3', '4', '5')
    
    >>> ('a',1,3)
    ('a', 1, 3)
元组的索引和字符串是一样的
    >>> mytuple
    ('1', '2', '3', '4', '5')
    >>> mytuple.count('1')
    1
    >>> mytuple.count(2)
    0
    >>> mytuple.count('2')
    1
    >>> mytuple.count('1')
    1
    >>> mytuple.count('3')
    1
    >>> mytuple[::-1]
    ('5', '4', '3', '2', '1')
    >>> mytuple[-1]
    '5'
    >>> mytuple
    ('1', '2', '3', '4', '5')
    >>> mytuple[1]
    '2'
    >>> mytuple[0:3]
    ('1', '2', '3')
    >>> mytuple[5:0:-1]
    ('5', '4', '3', '2')
    >>> mytuple[5::-1]
    ('5', '4', '3', '2', '1')
元组的特性
    元组可以不加括号
        >>> 1,2
        (1, 2)
    单元素元组需要加逗号
        >>> type([1])
        <class 'list'>
        >>> type((1))
        <class 'int'>
        >>> type((21,))
        <class 'tuple'>
    元组不可修改,所以我们再配置文件中多看到元组
        Django 配置的一部分
        DATABASE = (
        Os.path.join(BASEDIR," TEMPLATE"),
        )
元组的方法
    元组的查找
        index   从左往右指定元素的索引,遇见的第一个元素
        count   寻找元组中的指定的元素的个数
            >>> mytuple
            ('1', '2', '3', '4', '5')
            >>> mytuple.index('1')
            0
            >>> mytuple.index('5')
            4
            >>> mytuple.count('1')
            1
            >>> mytuple.count('5')
            1

元组和字符串的区别
1、元组和字符串都是有序的,不可修改的序列
2、元组的元素可以是任何类型,字符串的元素只能是字符
3、元组的元素长度可以任意,字符串的元素长度只能为 1
验证元组和字符串的长度
>>> a
'abc'
>>> mytuple
'shuai'
>>> len(a[0])
1
>>> len(mytuple[0])
1
>>> mytuple = ('shuai',1)
>>> mytuple
('shuai', 1)
>>> len(mytuple[0])
5
元组的创建方法
>>> a
'shuai'
>>> mytuple = ('shuai',a)
>>> mytuple
('shuai', 'shuai')

>>> mytuple = ('shuai',1)
>>> mytuple
('shuai', 1)
>>> len(mytuple[0])
5

>>> mytuple = ('shuai',a)   a = 'shuai'
>>> mytuple
('shuai', 'shuai')
>>> len(mytuple[0])
5

>>> mytuple = ('shuai',b)   引入字符串必须放在引号里
Traceback (most recent call last):
  File "<pyshell#196>", line 1, in <module>
    mytuple = ('shuai',b)
NameError: name 'b' is not defined
>>> mytuple = ('shuai','b')
>>> mytuple
('shuai', 'b')

>>> mytuple = ('shuai',1) 数字可以放在外面
>>> mytuple
('shuai', 1)

>>> mytuple = ('shuai',)
>>> mytuple
('shuai',)
>>> len(mytuple[0])
5

>>> mytuple = ('shuai,shuai')  与这个区分,这是字符串的创建方法

python字典
字典一个元素呈键值对的形式,以逗号分割,以大括号包围的无序的,可以修改的序列。
字典是python基础数据类型当中唯一一个映射关系的数据类型,通常对应JSON{}
字典创建方法
>>> mydict = {'a':1,"b":2}
>>> mydict
{'a': 1, 'b': 2}
fromkeys 这种方法只能给所有的键都赋一样的值
>>> mydict = {}.fromkeys('abcd')
>>> mydict
{'a': None, 'b': None, 'c': None, 'd': None}
>>> mydict = {}.fromkeys('abcd','shuai')
>>> mydict
{'a': 'shuai', 'b': 'shuai', 'c': 'shuai', 'd': 'shuai'}

dict
    zip 
    函数:将几个序列对应索引位上的元素分到一个元组中,总的形成一个列表,子元组的
    个数取决于提供的序列的最小长度
python2 与python3的区别
    python2 直接返回对象
    python3 返回对象的内存地址,需要用列表进行转换
    补充:python3中减少了内存的占用,优化了性能但是速度更慢了

        >>> myzip = zip('abcd','1234')
        >>> myzip
        <zip object at 0x00000223D8276BC8>      python3中的内存地址
        >>> list(myzip)                         
                                    元素啄一对应,长度取决于最小的序列的长度
        [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
        >>> myzip = zip('abcd','123456','shuai','1234')
        >>> myzip
        <zip object at 0x00000223D828A388>
        >>> list(myzip)
        [('a', '1', 's', '1'), ('b', '2', 'h', '2'), ('c', '3', 'u', 
        '3'), ('d', '4', 'a', '4')]
        
        >>> dict([('a',1),('b',2)])
        {'a': 1, 'b': 2}
        >>> dict(zip('abcdefg','1234567'))
        {'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5', 'f': '6', 'g': '7'}
        >>> mydict = zip('abcd','1234')
        >>> mydict
        <zip object at 0x00000223D828AE08>
        >>> list(mydict)
        [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
        >>> mydict = dict(mydict)
        >>> mydict
        {}
        
        >>> mydict = zip('abcd','1234')
        >>> mydict = dict(mydict)
        >>> mydict
        {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
        >>> mydict = zip('abcd','1234')
        >>> mydict
        <zip object at 0x0000018304BCF2C8>

        >>> list(mydict)
        [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
        >>> dict(mydict)
        {}
        >>> mydict = zip('abcd','1234')
        >>> dict(mydict)
        {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
    mydict = zip('')    创建的是列表
    dict(zip())     列表转为字典
    dict([()])      元组-->列表-->字典

    字典的特点:
        因为字典是无序的,所以字典没有索引值
        因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引)
            >>> myzip = dict(zip('abcd','1234'))
            >>> myzip
            {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
            >>> myzip['a']
            '1'
    因为字典以键取值,所以字典的键唯一且不可修改。
    因为字典的键不可修改,所以列表和字典不可以给字典做键。
            >>> myzip = {'a':1,1:'a',(1,2):'c'}
            >>> myzip
            {'a': 1, 1: 'a', (1, 2): 'c'}
            >>> myzip = {'a':1,1:'a',(1,2):'c',{'a':1}:1}
            Traceback (most recent call last):
              File "<pyshell#48>", line 1, in <module>
                myzip = {'a':1,1:'a',(1,2):'c',{'a':1}:1}
            TypeError: unhashable type: 'dict'
        字典和列表不可以作为字典的键
字典的方法:
    字典的取值:
        keys        获取字典所有的键
        values      获取字典所有的值
        get         以键取值,如果指定键不存在,默认返回None可以指定返回内容
        update      更新指定键的内容,如果键不存在就直接创建
        setdefault  设置默认,如果键存在,返回值,如果键不存在,创造键,值默认
                    为None,值也可以自定义
        items       返回字典键值呈元组形式的格式
    字典的删除
        pop         弹出,返回并删除指定键对应的值
        popitem     随机弹出一个键值元组,这里随机的原因是因为字典无序
        clear       清空字典
            字典的取值
                >>> mydict = dict(zip('abc','123'))
                >>> mydict
                {'a': '1', 'b': '2', 'c': '3'}
            keys
                >>> mydict.keys()
                dict_keys(['a', 'b', 'c'])
            values
                >>> mydict.values()
                dict_values(['1', '2', '3'])
                >>> list(mydict.keys())
                ['a', 'b', 'c']
                >>> list(mydict.values())
                ['1', '2', '3']
                >>> mydict.get('a')
                '1'
                >>> mydict['a']
                '1'
                >>> mydict.get('x')
                >>> mydict['x']
                Traceback (most recent call last):
                  File "<pyshell#74>", line 1, in <module>
                    mydict['x']
                KeyError: 'x'

            >>> mydict.update(dict(zip('a',1)))
            Traceback (most recent call last):
              File "<pyshell#75>", line 1, in <module>
                mydict.update(dict(zip('a',1)))
            TypeError: zip argument #2 must support iteration
            >>> mydict.update({'a',1})
            Traceback (most recent call last):
              File "<pyshell#76>", line 1, in <module>
                mydict.update({'a',1})
            TypeError: cannot convert dictionary update sequence element #0 to a sequence
                >>> mydict
                {'a': '1', 'b': '2', 'c': '3'}
                >>> mydict.update({'a':1})
                >>> mydict
                {'a': 1, 'b': '2', 'c': '3'}
                >>> mydict.update({'a':2})
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3'}
                >>> mydict+{'y':1}
                Traceback (most recent call last):
                  File "<pyshell#83>", line 1, in <module>
                    mydict+{'y':1}
                TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
                >>> mydict.update({'x':55})
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55}

                >>> mydict.setdefault('x')
                55
                >>> mydict.setdefault('y')
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55, 'y': None}
                >>> mydict.setdefault('y',88)
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55, 'y': None}
                >>> mydict.setdefault('h',99)
                99
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55, 'y': None, 'h': 99}
                >>> mydict.items()
                dict_items([('a', 2), ('b', '2'), ('c', '3'), ('x', 55), 
                ('y', None), ('h', 99)])
                >>> list(mydict.items())
                [('a', 2), ('b', '2'), ('c', '3'), ('x', 55), ('y', 
                None), ('h', 99)]
                >>> 
    字典的删除
        pop     只能弹出指定的内容键,不能弹出数值
                >>> mydict.pop()
                Traceback (most recent call last):
                  File "<pyshell#96>", line 1, in <module>
                    mydict.pop()
                TypeError: pop expected at least 1 arguments, got 0
                >>> mydict.pop('y')
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55, 'h': 99}
                >>> mydict.pop('h')
                99
                >>> mydict
                {'a': 2, 'b': '2', 'c': '3', 'x': 55}
                >>> mydict.pop(55)
                Traceback (most recent call last):
                  File "<pyshell#101>", line 1, in <module>
                    mydict.pop(55)
                KeyError: 55

        popitem clear   随机弹出内容,清空内容
                    >>> mydict
                    {'a': 2, 'b': '2', 'c': '3', 'x': 55}
                    >>> mydict.popitem()
                    ('x', 55)
                    >>> mydict.popitem()
                    ('c', '3')
                    >>> mydict.popitem()
                    ('b', '2')
                    >>> mydict
                    {'a': 2}
                    >>> list(mydict.items())
                    [('a', 2)]
                    >>> mydict = dict(zip('abcd','1234'))
                    >>> mydict
                    {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
                    >>> list(mydict.items())
                    [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
                    >>> mydict.popitem()
                    ('d', '4')
                    >>> mydict.popitem()
                    ('c', '3')
                    >>> mydict.popitem()
                    ('b', '2')
                    >>> mydict
                    {'a': '1'}
                    >>> mydict.clear()
                    >>> mydict
                    {}
        python2中
            判断has_key
        python3
            用in     替换
            in判定有没有指定的键
                >>> mydict = dict(zip('abcd','1234'))
                >>> mydict
                {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
                >>> 'a' in mydict       判断a 是否在字典里
                True
                >>> 2 in mydict
                False
                >>> '2' in mydict
                False

字典的拷贝属于浅层拷贝,拷贝和拷贝对象的嵌套层同属一个内存,一个修改另一个也会修改
普通键对应的值发生变化,复制的字典值不变,列表对应的键值变了,复制的列表的对应的键值也变化
>>> mydict
{'a': '1', 'b': '2', 'c': '3', 'd': '4'}
>>> mydict.update({'z':[11]})
>>> mydict
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'z': [11]}
>>> mydict_1 = mydict.copy()
>>> mydict_1
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'z': [11]}
>>> mydict['a'] = 11
>>> mydict
{'a': 11, 'b': '2', 'c': '3', 'd': '4', 'z': [11]}
>>> mydict_1
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'z': [11]}
>>> mydict['z'][0] = 5
>>> mydict
{'a': 11, 'b': '2', 'c': '3', 'd': '4', 'z': [5]}
>>> mydict_1
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'z': [5]}

数据类型的总结

        str     list    tuple   dict

是否有序 是 是 是 否
是否可修改 不 可 不 可
方法多少 很多 一般 很少 较多 映射关系


上一篇下一篇

猜你喜欢

热点阅读