zoukankan      html  css  js  c++  java
  • Python 变量(下)

    列表


    列表是可修改的序列类型。所以列表不可以作为字典的键。

    1 >>> a = [1]
    2 >>> hash(a)
    3 Traceback (most recent call last):
    4   File "<pyshell#1>", line 1, in <module>
    5     hash(a)
    6 TypeError: unhashable type: 'list' 
    如果调用hash()函数抛出异常TypeError。
     
    列表的操作:
    • 赋值操作:s[i] = x
    • 赋值操作:s[i:j] = t
    • 删除操作:del s[i:j] 相当于 s[i:j] = []
    • 赋值操作:s[i:j:k] = t
    • 删除操作:del s[i:j:k]
    • 添加元素到末尾:s.append(x)
    • 删除整个列表的元素:s.clear()
    • 浅复制:s.copy() 相当于 s[:]
    • 扩展列表:s.extend(t) 或者 s += t
    • 复制内容n次:s* = n
    • 在位置i,出入元素:s.insert(i,x)
    • 弹出:s.pop([i])弹出位置 i 的元素,并返回, i 是可选的,默认弹出列表末尾的元素
    • 删除:s.remove(x) 删除元素,如果没有找到元素,抛出ValueError异常
    • 倒序:s.reverse()
    举例:
     
     1 >>>s = [1,3]
     2 >>> s
     3 [1, 3]
     4 >>> s.extend([4])
     5 >>> s
     6 [1, 3, 4]
     7 >>> s += [6,7]
     8 >>> s
     9 [1, 3, 4, 6, 7]
    10 >>> s *= 2
    11 >>> s
    12 [1, 3, 4, 6, 7, 1, 3, 4, 6, 7]
    13 >>> s.insert(3, 10)
    14 >>> s
    15 [1, 3, 4, 10, 6, 7, 1, 3, 4, 6, 7]
    16 >>> s.pop()
    17 7
    18 >>> s
    19 [1, 3, 4, 10, 6, 7, 1, 3, 4, 6]
    20 >>> s.pop(3)
    21 10
    22 >>> s
    23 [1, 3, 4, 6, 7, 1, 3, 4, 6]
    24 >>> s.remove(1)
    25 >>> s
    26 [3, 4, 6, 7, 1, 3, 4, 6]
    27 >>> s.reverse()
    28 >>> s
    29 [6, 4, 3, 1, 7, 6, 4, 3]
    30 >>> s.remove(100)
    31 Traceback (most recent call last):
    32 File "<stdin>", line 1, in <module>
    33 ValueError: list.remove(x): x not in list
    s.remove(e)只会删除一个元素。

    元组


    元组是不可变的序列类型。由于它的不可变,可作为字典的键。
    1 >>> t = 1
    2 >>> hash(t)
    3 3430019387558
    列表调用 hash() 函数会抛出 TypeError 异常,元组没有问题,返回的是一个整数。

    元组的构造方式


     

     
    使用一对小括号生成一个空的元组 ()
    逗号加在一个字符末尾,声明一个元素的元组 2, 或者 (2,)
    逗号分隔的元素 1,2,3 或者 (1,2,3)
    利用 tuple() 函数,tuple() 或者 tuple(iterable)
     1 >>> t = tuple()
     2 >>> print(t)
     3 ()
     4 >>> t = 1,
     5 >>> print(t)
     6 (1,)
     7 >>> t[0]
     8 1
     9 >>> t[1]
    10 Traceback (most recent call last):
    11 File "<stdin>", line 1, in <module>
    12 IndexError: tuple index out of range
    13 >>> t2 = (1,2,3)
    14 >>> print(t2)
    15 (1, 2, 3)
    16 >>> t3 = tuple([1,2,3,4])
    17 >>> print(t3)
    18 (1, 2, 3, 4)
    19 >>> t4 = tuple(range(10))
    20 >>> print(t4)
    21 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    22 >>> print(t4[3])
    23 3
    24 >>> print(t4[3:8])
    25 (3, 4, 5, 6, 7)
    列表和元组访问如果下标越界,会抛出IndexError 异常,例如元组越界会抛出 IndexError: tuple index out of range
     

    字典


     Python中的字典是一个可映射的对象,映射是指一个可哈希化(hashable)的键值对应一个对象。字典是一个可变对象。
    例如 {'name': 'alex', 'age': 18} ,声明了一个字典,对应两个映射对象,键姓名 name 对应一个字符串值alex,键年龄 age 对应一个整数 18。键 name age 都是字符串,由于字符串是不可变的,可以哈希化,所以能够作为键值。字典的值不必是哈希化的,所以列表可以作为值。
     
    字典的声明方式:
    • {'one': 1}
    • dict(**kwarg)
    • dict(mapping, **kwarg)
    • dict(iterable, **kwarg)
     1 >>> a = dict(one=1, two=2, three=3)
     2 >>> b = {'one': 1, 'two': 2, 'three': 3}
     3 >>> a
     4 {'one': 1, 'two': 2, 'three': 3}
     5 >>> b
     6 {'one': 1, 'two': 2, 'three': 3}
     7 >>> c = dict(zip(['one', 'two', 'three'], [1,2,3]))
     8 >>> c
     9 {'one': 1, 'two': 2, 'three': 3}
    10 >>> d = dict([('one', 1), ('two', 2), ('three', 3)])
    11 >>> d
    12 {'one': 1, 'two': 2, 'three': 3}

    字典的操作


     

    • 返回字典长度 len(d)
    • 返回键值 d[key],如果键不存在,抛出 KeyError
    • 设置或更新键值 d[key] = value
    • 从字典中删除键 del d[key],如果键不存在,抛出 KeyError
    • key in d 判断一个键是否存在
    • iter(d) 返回一个包含字典中所有键的迭代器
    • d.clear() 清空字典
    • classmethod fromkeys(seq, [value]) 从一个序列seq生成一个字典,value值是可选的,不传默认是 None,这是一个类方法。
    • d.get(key[, default]) 获取键key的值。key不存在,则返回第二个参数default的值,如果第二个参数没有传,返回 None 类型。
    • d.items() 返回键值对的一个视图对象,可以用for遍历,键值对是元组形式。
    • d.keys() 返回键的一个视图对象,可以用for遍历
    • d.pop(key[, default]) 弹出键key的值,没有则返回default
    • d.popitem() 弹出一个键值元组
    • d.setdefault(key[, default]) 如果键key存在,返回值,不存在则设置字典key=default,返回default
    • d.update(other) other更新字典,如果other中的键已经存在了,则覆盖原来的值。
    • d.values() 返回所有值的视图对象,可以用for遍历
     1 >>> d = {}
     2 >>> d['one'] = 1
     3 >>> d['two'] = 2
     4 >>> d
     5 {'one': 1, 'two': 2}
     6 >>> del d['not_exists']
     7 Traceback (most recent call last):
     8 File "<stdin>", line 1, in <module>
     9 KeyError: 'not_exists'
    10 >>> del d['one']
    11 >>> d
    12 {'two': 2}
    13 >>> d.clear()
    14 >>> d
    15 {}
    16 >>> len(d)
    17 0
    18 >>> d = dict.fromkeys('abc', 2)
    19 >>> d
    20 {'a': 2, 'c': 2, 'b': 2}
    21 >>> d.get('a', 100)
    22 2
    23 >>> d.get('f', 100)
    24 100
    25 >>> d
    26 {'a': 2, 'c': 2, 'b': 2}
    27 >>> for i in d.items(): print(i)
    28 ...
    29 ('a', 2)
    30 ('c', 2)
    31 ('b', 2)
    32 >>> for i in d.keys(): print(i)
    33 ...
    34 a
    35 c
    36 b
    37 >>> d['c'] = 5
    38 >>> for i in d.values(): print(i)
    39 ...
    40 2
    41 5
    42 2
    43 >>> d.pop('f')
    44 Traceback (most recent call last):
    45 File "<stdin>", line 1, in <module>
    46 KeyError: 'f'
    47 >>> d.pop('f', 99)
    48 99
    49 >>> d
    50 {'a': 2, 'c': 5, 'b': 2}
    51 >>> d.popitem()
    52 ('a', 2)
    53 >>> d
    54 {'c': 5, 'b': 2}
    55 >>> d.setdefault('c', 99)
    56 5
    57 >>> d
    58 {'c': 5, 'b': 2}
    59 >>> d.setdefault('e', 99)
    60 99
    61 >>> d
    62 {'e': 99, 'c': 5, 'b': 2}
    63 >>> d.update({'d': 8})
    64 >>> d
    65 {'e': 99, 'c': 5, 'b': 2, 'd': 8}

     


  • 相关阅读:
    Codeforces Round #401 (Div. 2)【A,B,C,D】
    HDU2874【LCA(模板)】
    ZOJ2898【折半搜索】
    zoj2901【DP·二进制优化】
    萌新笔记之鸽巢原理及其应用
    codeforces 547B【单调栈】
    Codeforces631C【栈维护+瞎搞】
    每天一节组合数学
    HDU 1506【单调栈】
    HDU 3410【单调栈】
  • 原文地址:https://www.cnblogs.com/kadycui/p/9225739.html
Copyright © 2011-2022 走看看