美文网首页
Python学习(二)--列表、元组、集合

Python学习(二)--列表、元组、集合

作者: 白面葫芦娃92 | 来源:发表于2019-10-14 10:57 被阅读0次

    1.列表的定义

    >>> '列表'
    '列表'
    >>> [1,2,3,4,5,6]
    [1, 2, 3, 4, 5, 6]
    >>> type([1,2,3,4,5])
    <class 'list'>
    >>> type(['hello','world',1,9,True,False])
    <class 'list'>
    >>> type([[1,2],[True,False]])
    <class 'list'>
    

    列表里可以有多种类型,列表里也可以有列表,在其他语言里叫二维数组,对于Python可以叫做嵌套列表
    2.列表的基本操作

    >>> [1,2,3,4,5][0]
    1
    >>> [1,2,3,4,5][0:2]
    [1, 2]
    >>> [1,2,3,4,5][1:3]
    [2, 3]
    >>> [1,2,3,4,5][1:2]
    [2]
    >>> type([1,2,3,4,5][0])
    <class 'int'>
    >>> type([1,2,3,4,5][1:3])
    <class 'list'>
    >>> type([1,2,3,4,5][1:2])
    <class 'list'>
    

    [1,2,3,4,5][1]和[1,2,3,4,5][1:2]都是取得元素2,但是第一个的结果类型是int,第二个结果类型是列表

    >>> [1,2,3,4]+[5,6,7]
    [1, 2, 3, 4, 5, 6, 7]
    >>> [1,2,3]*3
    [1, 2, 3, 1, 2, 3, 1, 2, 3]
    >>> [1,2,3,4]-[5,6,7]
    Traceback (most recent call last):
      File "<pyshell#14>", line 1, in <module>
        [1,2,3,4]-[5,6,7]
    TypeError: unsupported operand type(s) for -: 'list' and 'list'
    >>> [1,2,3,4]*[5,6,7]
    Traceback (most recent call last):
      File "<pyshell#15>", line 1, in <module>
        [1,2,3,4]*[5,6,7]
    TypeError: can't multiply sequence by non-int of type 'list'
    

    列表之间可以相加,但是不能相减和相乘
    3.元组

    >>> '元组'
    '元组'
    >>> type((1,2,3))
    <class 'tuple'>
    >>> (1,2,3,4,5)
    (1, 2, 3, 4, 5)
    >>> ('hello','world',1,2,5,True)
    ('hello', 'world', 1, 2, 5, True)
    >>> (1,2,3,4)[0]
    1
    >>> (1,2,3,4)[1:3]
    (2, 3)
    >>> (1,2,3,4)[1:2]
    (2,)
    >>> (1,2,3,4)+(5,6,7,8)
    (1, 2, 3, 4, 5, 6, 7, 8)
    >>> (1,2,3)*3
    (1, 2, 3, 1, 2, 3, 1, 2, 3)
    

    元组和列表是有区别的
    (查一下资料)

    >>> type((1))
    <class 'int'>
    >>> type([1])
    <class 'list'>
    

    另外一个奇怪现象

    >>> type((1))
    <class 'int'>
    >>> type(('hello'))
    <class 'str'>
    

    当元组里只有一个元素时,数据类型是这个单一元素的类型,而不是tuple
    因为()里只有一个元素时,编译器认为()是一个运算隔离符号,而并不认为这表示了一个元组
    那么如何定义只有一个元素的元组呢?

    >>> type((1,))
    <class 'tuple'>
    

    这就是为什么上边有

    >>> (1,2,3,4)[1:2]
    (2,)
    

    得到的是(2,)而不是(2)
    如何定义一个空的元组呢?

    >>> type(())
    <class 'tuple'>
    

    4.序列总结
    str,list,tuple都属于序列,特点是
    (1)每一个元素都有一个序号
    (2)另一个概念:切片
    [1,2,3,4,5][1:3]
    "hello world"[0:8:2]

    //取0到8个元素,步长为2
    >>> "hello world"[0:8:2]
    'hlow'
    //取0到8个元素,步长为3
    >>> "hello world"[0:8:3]
    'hlw'
    

    (3)可以+,*
    (4)

    >>> 3 in [1,2,3,4]
    True
    >>> 10 in [1,2,3,4]
    False
    >>> 3 not in [1,2,3,4,5,6]
    False
    >>> len([1,2,3,4,5,6])
    6
    >>> len((1,2,3,4,5,6))
    6
    >>> len('hello world')
    11
    >>> len(['hello','world',True,4])
    4
    >>> max((1,2,3,4,5,6))
    6
    >>> min((1,2,3,4,5,6))
    1
    >>> max('hello world')
    'w'
    >>> min('hello world')
    ' '
    >>> min('helloworld')
    'd'
    

    5.set集合
    特性1:无序

    >>> {1,2,3,4,5}
    {1, 2, 3, 4, 5}
    >>> type({1,2,3,4,5})
    <class 'set'>
    //因为集合是无序的,所以序列里的大多数基本操作不支持
    >>> {1,2,3,4,5}[3]
    Traceback (most recent call last):
      File "<pyshell#55>", line 1, in <module>
        {1,2,3,4,5}[3]
    TypeError: 'set' object is not subscriptable
    >>> {1,2,3,4,5}[0:3]
    Traceback (most recent call last):
      File "<pyshell#56>", line 1, in <module>
        {1,2,3,4,5}[0:3]
    TypeError: 'set' object is not subscriptable
    >>> {1,2,3,4}+{5,6}
    Traceback (most recent call last):
      File "<pyshell#66>", line 1, in <module>
        {1,2,3,4}+{5,6}
    TypeError: unsupported operand type(s) for +: 'set' and 'set'
    >>> {1,2,3}*3
    Traceback (most recent call last):
      File "<pyshell#67>", line 1, in <module>
        {1,2,3}*3
    TypeError: unsupported operand type(s) for *: 'set' and 'int'
    

    特性2:不重复

    >>> (1,1,1,2,3)
    (1, 1, 1, 2, 3)
    >>> [1,1,1,2,3]
    [1, 1, 1, 2, 3]
    >>> {1,1,1,2,3}
    {1, 2, 3}
    >>> type({1,2,3})
    <class 'set'>
    >>> len({1,1,1,2,3})
    3
    >>> 1 in {1,1,1,2,3}
    True
    >>> 1 not in {1,1,1,2,3}
    False
    

    求两个集合的差集

    >>> {1,2,3,4}-{1,4}
    {2, 3}
    

    求两个集合的交集

    >>> {1,2,3,4}&{1,4}
    {1, 4}
    

    求两个集合的合集或并集

    >>> {1,2,3,4}|{5,6}
    {1, 2, 3, 4, 5, 6}
    >>> {1,2,3,4}|{3,4,7}
    {1, 2, 3, 4, 7}
    

    如何定义一个空集?

    //猜想,是不是{},结果发现{}是dict类型,不是set类型
    >>> type({})
    <class 'dict'>
    //空集应如下表示
    >>> type(set())
    <class 'set'>
    >>> len(set())
    0
    

    6.dict字典
    由key value组成 属于集合类型,而不是序列

    >>> {1:1,2:2}
    {1: 1, 2: 2}
    >>> type({1:1,2:2})
    <class 'dict'>
    >>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
    {'F1': '新月打击', 'F2': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
    >>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[0]
    Traceback (most recent call last):
      File "<pyshell#84>", line 1, in <module>
        {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[0]
    KeyError: 0
    >>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}['F1']
    '新月打击'
    

    key是不能重复的

    >>> {'F1':'新月打击','F1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
    {'F1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
    

    key既可以是int类型,也可以是str类型,但必须是不可变的类型,比如key不可以是列表类型,但可以是元组类型

    >>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
    {1: '新月打击', '1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
    >>> {1:'新月打击','1':'苍白之瀑',[1,2]:'月之降临','F4':'月神冲刺','F5':{1,2,3}}
    Traceback (most recent call last):
      File "<pyshell#95>", line 1, in <module>
        {1:'新月打击','1':'苍白之瀑',[1,2]:'月之降临','F4':'月神冲刺','F5':{1,2,3}}
    TypeError: unhashable type: 'list'
    >>> {1:'新月打击','1':'苍白之瀑',(1,2):'月之降临','F4':'月神冲刺','F5':{1,2,3}}
    {1: '新月打击', '1': '苍白之瀑', (1, 2): '月之降临', 'F4': '月神冲刺', 'F5': {1, 2, 3}}
    

    1和'1'是不同的key

    >>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[1]
    '新月打击'
    >>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}['1']
    '苍白之瀑'
    

    value可以是任意的类型

    >>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺','F5':{1,2,3}}
    {1: '新月打击', '1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺', 'F5': {1, 2, 3}}
    

    空的字典,用{}表示

    >>> type({})
    <class 'dict'>
    

    7.Python数据类型思维导图


    相关文章

      网友评论

          本文标题:Python学习(二)--列表、元组、集合

          本文链接:https://www.haomeiwen.com/subject/aumlmctx.html