元组(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. CollectionUtils工具类使用指南

    CollectionUtils提供很多对集合的操作方法,常用的方法如下:(参考文章:http://www.open-open.com/code/view/1420470842125) import o ...

  2. Arcgis for javascript map操作addLayer详解

    本节的内容很简单,说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种,如下图: addLayer方法 在addLa ...

  3. 使用vscode书写博客

    很早就开始使用过vscode了,不过在已经成熟的sublime的碾压下,vscode一直没有成为我的首选,今天为了更好的博客书写体验,我直接放弃了sublime,因为 sublime对中文支持不好,而 ...

  4. 对结合BDD进行DDD开发的一点思考和整理

    引言 二十年前的我,还在学校里抱着一台DIY机(德州486+大众主板+16M内存+3.5inch软驱+昆腾320M硬盘,当时全校最快主机没有之一),揣着一本<Undocumented DOS&g ...

  5. C++之内存管理

    内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄 ...

  6. win10环境变量的配置

    c盘->环境变量: 1.添加变量名和变量值 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_161 2.添加变量名和变量值 变量名:JAVA_H ...

  7. Hexo博客网站再配置

    这两天整理网站方面的事,本地IIS部署,个人网站,发现我的hexo做的个人网站实在很单调,于是找来资料做进一步的配置. 一.网站图标 看一下hexo\themes\modernist\layout\_ ...

  8. 致Oracle DBA 的一封信 (网上流传)

    1. 数据库的可用度,DBA 说了“不算”   --物化视图,加快查询速度 某些时候数据库的可用性,并不由DBA所设定.因为即使DBA对数据库有绝对掌控权,但用户可能从自己的工作和应用角度,与DBA的 ...

  9. zabbix 3.0.2自定义脚本

    http://blog.51cto.com/xiao987334176/1769766 有一个通知队列,如果超过了一定的值,就需要报警一下 查询接口可以返回队列的数量,格式是json,data后面的数 ...

  10. Java Integer和String内存存储

    标签: java内存string 2016-01-10 12:51 1545人阅读 评论(2) 收藏 举报  分类: Java(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 先看代码: ...