元组(Tuple):

定义方法:使用小括号()

使用方法:

count:可以统计某个元组段在整个元组中出现的次数

index:可以查询某个元组段在整个元组中的元组号

name_tuple = ('xiaoming','xiaohong','xiaoli','xiaozhang','xiaoming')
#统计xiaoming出现的次数
print name_tuple.count('xiaoming')
#统计xiaoming在元组中的下标,默认从0开始计算
print name_tuple.index('xiaoming')
#统计xiaoming在元组中的下标,从指定的小标1,开始计算
print name_tuple.index('xiaoming',1)

返回结果:

2
0
4

列表(list):

1.可以增加列表内容 append

2.可以统计某个列表段在整个列表中出现的次数 count

3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 extedn

4.可以查询某个列表段在整个列表的位置 index

5.可以在指定位置插入一个列表段 insert

6.可以删除列表的最后一个列表段 pop

7.可以删除指定列表中的某个列表段 remove

8.可以正向反向排序 reverse

9.可以按字母或数字排序 sort

10.定义列表时候使用中括号"[]"

name_list = ['sean','tom','jack','Angelia','Daisy','jack']
print name_list
#增加david列表
name_list.append('david')
print name_list
#统计jack出现的次数
print name_list.count('jack')
#使用extend向列表中增加一个列表
name_list.extend(['hello','world'])
print name_list
#使用extend向列表中增加列表段
name_list.extend('sean')
print name_list
#这里统计的是第一个为jacak的id号
print name_list.index('jack')
#在索引号为2的地方插入Adam
name_list.insert(2, 'Adam')
print name_list
#删除最后一个列表段
name_list.pop()
print name_list
#删除指定列表段,如果存在多个,删除第一个
name_list.remove('jack')
print name_list
#列表倒置
name_list.reverse()
print name_list
name_list.reverse()
#对整个列表进行列表段的首字母进行排序
name_list.sort()
print name_list

结果:

['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack']   #原始结果
['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david'] #增加david后的结果
2 #统计jack出现次数
['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world'] # 使用extend向列表中增加一个列表
['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a', 'n'] #使用extend向列表中增加列表段
2 #统计的是第一个为jacak的id号
['sean', 'tom', 'Adam', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a', 'n'] #在索引号为2的地方插入Adam
['sean', 'tom', 'Adam', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a'] #删除最后一个列表段
['sean', 'tom', 'Adam', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a'] #删除指定列表段,如果存在多个,删除第一个
['a', 'e', 's', 'world', 'hello', 'david', 'jack', 'Daisy', 'Angelia', 'Adam', 'tom', 'sean'] #列表倒置
['Adam', 'Angelia', 'Daisy', 'a', 'david', 'e', 'hello', 'jack', 's', 'sean', 'tom', 'world'] #对整个列表进行列表段的首字母进行排序

相同点:都是序列类型

两者区别:tuple是不可变类型,大小固定,而 list 是可变类型、数据可以动态变化

1、元组是不可变对象,对象一旦生成,它的值将不能更改;列表是可变对象,对象生成后,可以对其元素进行更改、添加、删除、清空、排序等操作。

2、可哈希和不可哈希
可哈希对象就是能映射成内存地址的对象。在Python基本数据类型中,只有列表、字典和可变集合是不可哈希的。说元组是可哈希也不对,如果元组中某个元素是列表、字典或可变集合,那么这个元组也是不可哈希的。可哈希对象和不可哈希对象的区别体现在:可哈希对象可以作为字典的键和集合的元素,不可哈希对象则不可以。

tuple 用于存储异构(heterogeneous)数据,当做没有字段名的记录来用,比如用 tuple 来记录一个人的身高、体重、年龄。

person = (“zhangsan”, 20, 180, 80) 
比如记录坐标上的某个点

point = (x, y) 
而列表一般用于存储同构数据(homogenous),同构数据就是具有相同意义的数据,比如下面的都是字符串类型

[“zhangsan”, “Lisi”, “wangwu”] 
再比如 list 存放的多条用户记录

[(“zhangsan”, 20, 180, 80), (“wangwu”, 20, 180, 80)] 
数据库操作中查询出来的记录就是由元组构成的列表结构。

字典(dict)

字典的基本操作

如何访问字典中的值?
adict[key]
形式返回键key对应的值value,如果key不在字典中会引发一个KeyError,如何检查key是否在字典中?
has_key()
形如:adict.haskey(‘name') 有–>True,无–>False
b、in 、not in 形如:'name' in adict 有–>True,无–>False
如何更新字典?
a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值

字典的方法:

dict.keys() 返回一个包含字典所有KEY的列表;
dict.values() 返回一个包含字典所有value的列表;
dict.items() 返回一个包含所有(键,值)元祖的列表;
dict.clear() 删除字典中的所有项或元素;
dict.copy() 返回一个字典浅拷贝的副本;
dict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);
dict.has_key(key) 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in;
dict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
dict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
dict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;
dict.update(bdict) 将字典bdict的键值对添加到字典adict中。

集合(set)

s1={0}
s2={i / 2 for i in range(10)}
print s1,s2
s=set('hi')
t=set(['h','e','l','l','o'])
print s,t print(s.intersection(t), s & t) # 交集
print(s.union(t), s | t) # 并集
print(s.difference(t), s - t) # 差集
print(s.symmetric_difference(t), s ^ t) # 对称差集
print(s1.issubset(s2), s1 <= s2) # 子集
print(s1.issuperset(s2), s1 >= s2) # 包含

结果:

set([0]) set([0, 1, 2, 3, 4])
set(['i', 'h']) set(['h', 'e', 'l', 'o'])
(set(['h']), set(['h']))
(set(['e', 'i', 'h', 'l', 'o']), set(['e', 'i', 'h', 'l', 'o']))
(set(['i']), set(['i']))
(set(['i', 'e', 'l', 'o']), set(['i', 'e', 'l', 'o']))
(True, True)
(False, False)

Tuple、list的区别以及dict和set的更多相关文章

  1. 27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

    本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...

  2. list和tuple的用法区别

    1.list中是可变的,tuple不可变  所以tuple没有insert, pop,append方法 2.定义只有一个元素的tuple的时候,必须加逗号,否则不会被认为是tuple,而被识别为括号 ...

  3. python中list/tuple/dict/set的区别

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.Python有6个序列的内置类型,但最常见的是列表list和元组t ...

  4. Python — List、Set、Tuple、Dictionary之间的区别、参数传递

    1.list 列表 有序集合,随时增删.包含的数据类型可以不同:整数.浮点数.字符串.list.tuple.dict.set.bool.空值.常量. list = [12, 'Yummy', 19.2 ...

  5. Python中字典dict

    dict字典 字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现 # 字典的创建 # 创建空字典1 d = {} print(d) # 创建空字典2 d = dict() print(d) ...

  6. Python中的基本数据类型的区别

    set集合和dict字典的区别 唯一区别: set没有对应的value值 相同点: 都无索引,不可进行切片和根据索引进行的操作 两者都是不可哈希的可变类型 两者的内部元素是可哈希的不可变类型 利用哈希 ...

  7. python 元组(tuple)

    面试python我想每个人都会被问一个问题,就是python中的list和tuple有什么区别? 一般情况下,我会回答,list元素可变,tuple元素不可变(书上或者其他的博客都是这么写的),一般情 ...

  8. 1.12 dict 字典表

    dict 字典表属于映射分类 dict的声明 >>> #dict类型 是 {}中包含若干个键值对 >>> d = dict() >>> d = { ...

  9. 深入set和dict

    一. 浅拷贝和深拷贝   浅拷贝:就是创建一个具有相同类型,相同值但不同id的新对象.  浅拷贝产生的新对象中可变对象的值在发生改变时,会对原对象的值也做出改变,因为这些值是同一个引用. a = [1 ...

随机推荐

  1. Redis 安装,配置,简介,数据类型(一)

      Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你 ...

  2. python考试

    py4测试题 1.8<<2等于?322.通过内置函数计算5除以2的余数 divmod(5,2)3.s=[1,"h",2,"e",[1,2,3],&q ...

  3. javascript: 代码优化

    一.避免全局查找 在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些 function search() { //当我要使用当前页面地址和主机域 ...

  4. Flask 的 请求扩展 与 中间件

    Flask 的 请求扩展 与 中间件 flask 可以通过 扩展(装饰器)来实现类似于django 中间件的功能 类似于django 的中间件, 在执行视图函数之前, 之后的执行某些功能 1 @app ...

  5. 偶然遇到的samba服务器权限问题

    也许有一些参考价值. CentOS 6.4使用命令service smb start启动samba服务器,在配置文件都正确,而且对应的共享目录权限也正确,使用smbpasswd添加了用户,这之后,使用 ...

  6. *android判断手机号的运营商

    TextView tv=(TextView)findViewById(R.id.tv); TelephonyManager telManager = (TelephonyManager) getSys ...

  7. MyEclipse Tern was unable to complete your request in time

    1.错误描述 2.错误原因 由错误提示可知,是由于MyEclipse Tern不能及时完成回复 3.解决办法 (1)Window--->Preferences--->MyEclipse-- ...

  8. Kali Linux ettercap的使用

    ettercap是执行ARP欺骗嗅探的工具,通常用它来施行中间人攻击. 我还介绍过另一个arp欺骗工具-arpspoof 我使用的是Kali Linux 2.0:在开始使用ettercap之前,先配置 ...

  9. 深度学习实战-----0001(移植反向传播Python to c++)

    1. https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/  老外教程 2. https://github. ...

  10. 最简单的记录程序运行时间的方法:[记录PHP程序运行消耗时间]

    比较实用的debug方法:具体参考地址已经记不清了,这里重写成类方便调用 /** * @author logonmy@126.com * @Date: 13-7-23 * @desc example ...