Python元组和字典

定义方式:

 1.  定义方式是:  2,3,4  ——》默认是一个元组
2. 使用():a= (2,3,4,2)  ——>认为元组   
a[1]=3   a.count(2)=0   a.index(3)=1
tuple函数的功能与list函数基本上一样的,以一个序列作为参数 并把它转换为元组,如果参数是元组,那么该参数就会被原样返回。
  a=(10) ——>则理解为a接收了一个int类型的变量 a=(10,) ——>则理解a为元组   注意:逗号
  3.元组中存放的数据可以是: int  str list dict
 元组里可以有不同类型的数据a=(1,2,"s",(1,2),[1,3],{"age":18}])
Python中不允许修改元组的数据,包括不能删除其中的元素。元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。 但是,如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变。
tuple()列表和字符串可以转化为元组,int整形数值不可以转化为元组
元组的内置函数两个count, index   index和count与字符串和列表中的用法相同
多维列表/元祖访问的示例a=((“刘备”,“刘禅”)) a[0][0]=刘备     a[0]=("刘备",“刘禅”)
元组的优点与列表相比,元组的优点:
通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类型。
由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。
元组可以用作字典的 key,而列表不行。因为字典的 key 必须是不可变的,元组本身就是不可变的。
如果数据不需要更改,将其作为元组来实现,可以确保“写保护”。
 A.字典定义:
1.以键值对作为整体,保存的数据
2.字典中的key不能重复,如果有相同的则后面的值覆盖了前面相同key的值
3.字典中元素的顺序是无序
  B.字典中值得获取:
  根据键获取值: 字典名[key]  ——>value    找不到报错 keyError
’ 也可以通过get(): 字典名.get(key,default)   ——>如果找不到key则显示默认值
字典是无序的不能用下表取值,通过key(键)取值,key不可以重复  字典名【’key‘】得到key对应的值
还可以通过字典名.get(key,default),如果找不到key则显示默认值。
字典定义字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。字典的每个元素由2部分组成,键:值。例如 'name':'宋江' ,'name'为键,'宋江'为值查找某个值是要用键访问值
使用.get(‘key’,default)不存在不会报错,而且可以设置默认值。如果存在返回默认值default

字典的增删改查

添加元素如果在使用 变量名['键'] = 数据 时,这个“键”在字典中不存在,那么就会新增这个元素

删除元素

1. del删除指定的元素
info = {'name':'宋江', 'sex':'男', 'address':'中国梁山'}
print('删除前,%s'%info)
del info['name']
print('删除后,%s'%info)
2.del删除整个字典info = {'name':'宋江', 'sex':'男', 'address':'中国'}       整个字典包含字典的空间都被回收,如果使用则报错
3. clear清空整个字典清除字典中所有项但是会保留空字典
4. pop删除字典对应的键和对应的值,并且返回键对应的值 字典名.pop(key)    返回当前key对应的值    如果                            key在字典中不存在????报错
5. popitem随机删除字典指定元素并且得到值,如果字典中所有内容都要删除则可以使用popitem()     字典空了能不能调用???? 报错

修改元素

通过key修改
info = {'name':'宋江', 'id':100, 'sex':'f', 'address':'中国梁山'}
name = input('请输入新的名字:')
info['name'] = name
print('修改之后的name为%s:'%info['name'])

查找元素

name = info.get("name")     name = info["name"]     if "name" in info:      if "name" in info.keys():
if "宋江" in info.values():

字典的键值操作

1. len()测量字典中,键值对的个数
2. keys()返回一个包含字典所有KEY的列表 Python3中  keys = list(info.keys())
    Python2#不需要转换就是列表keys = info.keys()
3. values返回一个包含字典所有value的列表       
      在python2中打印中文的value值并且没有乱码 print(str(info[1]).decode("utf-8"))
4. items返回可遍历的(键, 值) 元组数组for info in infos.items():        返回(“key”:“value”)
5. has_key       Python3中废弃了,这个方法是python 2.6以后支持的,但在python 3.0版本开始将使用in.
dict.has_key(key)如果key在字典中,返回True,否则返回False

字典遍历

通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。
1. 遍历字典的key(键)  for key in name.keys()
2. 遍历字典的value(值)  for value in name.value()
3. 遍历字典的items项(元素)for item in name.intems()———》(“age”,“18”)
4. 遍历字典的key-value(键值对)
nfos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}
print("----------元组下标方式-----------")
#元组下标方式
for a_tuple in infos.items():
   print("key={},value={}".format(a_tuple[0],a_tuple[1]))
print("----------拆元组方式-----------")
#拆元组方式
for key,value in infos.items():
   print("key={},value={}".format(key,value))
6. 使用枚举遍历enumerate()
如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
names = ["宋江","卢俊义","吴用"]
for i in range(len(names)):
   print("%d %s " % (i,names[i]))   麻烦

遍历字典返回key'

infos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}
for index,value in enumerate(infos):
   print("%d %s " % (index,value))

遍历值

infos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}
for index,value in enumerate(infos.values()):
   print("%d %s " % (index,value))

enumerate还可以接收第二个参数,用于指定索引起始值,使索引值下标由参数开始

names = ["宋江","卢俊义","吴用"]
for index,value in enumerate(names,2):
   print("%d %s " % (index,value))

集合(set)    可以字符串去重a=set(str) ---->{“a”,“b”,“c”}   a=set()

集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。
集合对象还支持并集y|x, 交集y&x 或x&y,差集(a-b)是:项在a中,但不在b中和对称差集x^z(在x或z中,但不会同时出现在二者中) 、联合等数学运算。

集合(set)、列表(list)、元组(tuple)相互转换  

运算符      Python 表达式          结果                   描述              支持的数据类型
+          [1, 2] + [3, 4]          [1, 2, 3, 4]                 合并                  字符串、列表、元组
*            'Hi!' * 3                 ['Hi!', 'Hi!', 'Hi!']               复制                   字符串、列表、元组
in          3 in (1, 2, 3)          True元素是否存在        字符串、                列表、元组、字典

not in  4 not in (1, 2, 3)         True                     元素是否不存在

字符串、列表、元组、字典

Extend,append该变原来的列表,但没有返回值(None)运算符有返回值
1、len() 方法返回对象(字符、列表、元组等)长度或项目个数   len在操作字典数据时,返回的是键值对个数。
2.max() 方法返回给定参数的最大值,参数可以为序列a = max("hello atguigu")
3.deldel有两种用法,一种是del加空格,另一种是del()
引用用id()来判断两个变量是否为同一个变量的引用  以后只要涉及到等号(=)的都是引用(两者地址相同)

在Python中值是靠引用来传递的

我们可以用id()来判断两个变量是否为同一个变量的引用。我们可以把id理解为那块内存的地址表示。
可以类型和不可变类型
不可变类型:字符串、数字、元组(不可变类型不能修改值)内容相同时地址相同
可变类型:列表,字典(要)(要就给地址不关你有没有)内容相同时地址也不同

引用的应用-三种方式交换两个数

1. 第一种方式:使用第三方变量其他语言也是可以这样实现,这种方式交换两个任何值都行,比如交换两个字符串都行。


第三种方式:Python特有方式


猜你喜欢

转载自blog.csdn.net/xiaoming0018/article/details/80343353
今日推荐