列表


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

 >>> a = [1]
>>> hash(a)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
hash(a)
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) 删除元素 x ,如果没有找到元素,抛出ValueError异常
  • 倒序:s.reverse()
举例:
 
 >>>s = [1,3]
>>> s
[1, 3]
>>> s.extend([4])
>>> s
[1, 3, 4]
>>> s += [6,7]
>>> s
[1, 3, 4, 6, 7]
>>> s *= 2
>>> s
[1, 3, 4, 6, 7, 1, 3, 4, 6, 7]
>>> s.insert(3, 10)
>>> s
[1, 3, 4, 10, 6, 7, 1, 3, 4, 6, 7]
>>> s.pop()
7
>>> s
[1, 3, 4, 10, 6, 7, 1, 3, 4, 6]
>>> s.pop(3)
10
>>> s
[1, 3, 4, 6, 7, 1, 3, 4, 6]
>>> s.remove(1)
>>> s
[3, 4, 6, 7, 1, 3, 4, 6]
>>> s.reverse()
>>> s
[6, 4, 3, 1, 7, 6, 4, 3]
>>> s.remove(100)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
s.remove(e)只会删除一个元素。

元组


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

元组的构造方式


 
使用一对小括号生成一个空的元组 ()
逗号加在一个字符末尾,声明一个元素的元组 2, 或者 (2,)
逗号分隔的元素 1,2,3 或者 (1,2,3)
利用 tuple() 函数,tuple() 或者 tuple(iterable)
 >>> t = tuple()
>>> print(t)
()
>>> t = 1,
>>> print(t)
(1,)
>>> t[0]
1
>>> t[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> t2 = (1,2,3)
>>> print(t2)
(1, 2, 3)
>>> t3 = tuple([1,2,3,4])
>>> print(t3)
(1, 2, 3, 4)
>>> t4 = tuple(range(10))
>>> print(t4)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> print(t4[3])
3
>>> print(t4[3:8])
(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)
 >>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> a
{'one': 1, 'two': 2, 'three': 3}
>>> b
{'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1,2,3]))
>>> c
{'one': 1, 'two': 2, 'three': 3}
>>> d = dict([('one', 1), ('two', 2), ('three', 3)])
>>> d
{'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遍历
 >>> d = {}
>>> d['one'] = 1
>>> d['two'] = 2
>>> d
{'one': 1, 'two': 2}
>>> del d['not_exists']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'not_exists'
>>> del d['one']
>>> d
{'two': 2}
>>> d.clear()
>>> d
{}
>>> len(d)
0
>>> d = dict.fromkeys('abc', 2)
>>> d
{'a': 2, 'c': 2, 'b': 2}
>>> d.get('a', 100)
2
>>> d.get('f', 100)
100
>>> d
{'a': 2, 'c': 2, 'b': 2}
>>> for i in d.items(): print(i)
...
('a', 2)
('c', 2)
('b', 2)
>>> for i in d.keys(): print(i)
...
a
c
b
>>> d['c'] = 5
>>> for i in d.values(): print(i)
...
2
5
2
>>> d.pop('f')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'f'
>>> d.pop('f', 99)
99
>>> d
{'a': 2, 'c': 5, 'b': 2}
>>> d.popitem()
('a', 2)
>>> d
{'c': 5, 'b': 2}
>>> d.setdefault('c', 99)
5
>>> d
{'c': 5, 'b': 2}
>>> d.setdefault('e', 99)
99
>>> d
{'e': 99, 'c': 5, 'b': 2}
>>> d.update({'d': 8})
>>> d
{'e': 99, 'c': 5, 'b': 2, 'd': 8}

 
 
 
 

Python 变量(下)的更多相关文章

  1. [Python Basics]下划线变量

    夜暗归云绕柁牙,江涵星影鹭眠沙. 行人怅望苏台柳,曾与吴王扫落花. 我平时很常见到的带有下划线的python变量有两种: 前后双下划线,我之前的理解是python程序中的类似meta data的信息, ...

  2. Python 变量作用域 LEGB (下)—— Enclosing function locals

    上篇:Python 变量作用域 LEGB (上)—— Local,Global,Builtin https://www.cnblogs.com/yvivid/p/python_LEGB_1.html ...

  3. Python 变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

  4. [No000064]python 变量命名规范

    python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是总结了一些,供参考. 模块名: 模块应该使用尽可能短的.全小写命名,可以在模块命名时使用下划线以增强可读性.同样包的命名也 ...

  5. Python变量、数据类型6

    1.Python变量 变量,即代表某个value的名字. 变量的值存储在内存中,这意味着在创建变量时会在内存中开辟一个空间. !!!即值并没有保存在变量中,它们保存在计算机内存的深处,被变量引用.所以 ...

  6. python 变量命名规范

    python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是总结了一些,供参考. 模块名: 模块应该使用尽可能短的.全小写命名,可以在模块命名时使用下划线以增强可读性.同样包的命名也 ...

  7. Python变量类型

    Python变量类型 变量是存储在内存中的值,因此在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定的内存,并决定什么数据可以被存储在内存中. 因此变量可以指定不同的数据类型, ...

  8. python——变量

    参考资料: Python程序设计与实现 变量名的命名规则 仅仅由大.小写英文字母,下划线(_),数字(不可作为变量名的开头)组合而成: 不能使用Python关键字和函数名作为变量名: 变量名不能包含空 ...

  9. Python的下划线_

    1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,"_"代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准C ...

  10. 【python系列】--Python变量和数据类型

    python数据类型 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用 ...

随机推荐

  1. 【PaPaPa】集成B/S主流技术的MVC5项目 - 实干派:说做就做,我们已经起航,你还在观望吗

    我们是谁 我们是C#爱好者,互相分享技术,一起学习一起成长一起做一个项目. 我们是开源爱好者,从我们手上出来的代码都会托管在源代码管理平台(oschina),到目前为止不收费,将来也不会出现任何收费情 ...

  2. 微信小程序中的 hover-class

    微信小程序中,可以用 hover-class 属性来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button ...

  3. 设置pdsh的默认登录模式

    1.check your pdsh default rcmd rsh pdsh -q -w localhostSee what your pdsh default rcmd is. 2.Modify ...

  4. pygrib学习

    pygrib-2.0.3/docs/index.html 导入pygrib模块 >>> import pygrib 打开grib文件,获取grib消息迭代器 >>> ...

  5. 接口自动化学习--mock

    好久没有写学习的总结,都正月十二了,但还是要来个新年快乐鸭. 一直都在看imooc的一套java接口自动化实战课程,现在看到了尾部了,然后想到之前那些testng,mock,httpclient等都没 ...

  6. JUC——线程同步锁(ReentrantLock)

    ReentrantLock简介 ReentrantLock是一个可重复的互斥锁,又被称为独占锁,可重入的意思是:ReentrantLock锁可以被单个线程多次获取.但是在同一个时间点只能被一个线程锁持 ...

  7. OTRS

    更新OTRS root@localhost密码: sudo -u otrs /opt/otrs/bin/otrs.Console.pl Admin::User::SetPassword root@lo ...

  8. 高可用OpenStack(Queen版)集群-15.Glance&Cinder集成Ceph

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

  9. caffe 预训练 或者Fine-Tuning 操作

    1.使用预训练模型,需要修改训练的prototxt,将layer name改为与要使用模型的layer name相同即可. Borrowing Weights from a Pretrained Ne ...

  10. web02-welcomeyou

    新建web项目web02-welcomeyou, 修改index.jsp为 <body> This is my JSP page. <br> <form action=& ...