老齐python-基础4(元祖、字典、集合)

1、元祖

元祖的特性结合了字符串和列表

元祖是用圆括号括起来的,其中的元素之间用逗号(英文半角)隔开。元祖中的元素是任意类型的python对象(包括以后自定义的对象)

元祖中的元素不可更改,所以修改列表的方法,在元祖中都会失效。

    使用场景:

元祖比列表操作速度快。如果定义了一个值,并且唯一要用他做的是不断的遍历他,那么请使用元祖代替列表。

如果对不需要修改的数据进行"写保护",即该数据是常量,那么此时也要使用元祖。如果必须要改变这些值,则可以转换为列表修改。

元祖可以在字典(又一种对象类型,后面要讲述)中被用作key,但是列表不可以。字典的key必须是不可变的。元祖本身就是不可改变的,而列表是可变的。

   

1.1定义元祖:

tu1 = tuple()
tu2 = (1,)
tu3 = (1,23,3,‘python‘)

>>> a = (3)
>>> type(3)
<class ‘int‘>  #定义时要注意的

1.2索引和切片,与列表相同

>>> t = (1,‘23‘,[123,‘abc‘],(‘python‘,‘learn‘))
>>> t[2]
[123, ‘abc‘]
>>> t[1:]
(‘23‘, [123, ‘abc‘], (‘python‘, ‘learn‘))
>>> t[2][0]
123
>>> t[3][1]
‘learn‘

1.3转换列表

>>> t = (1,‘23‘,[123,‘abc‘],(‘python‘,‘learn‘))
>>> tls = list(t)                            #转换列表
>>> tls
[1, ‘23‘, [123, ‘abc‘], (‘python‘, ‘learn‘)]
>>> t_tuple = tuple(tls)                #转换元祖
>>> t_tuple
(1, ‘23‘, [123, ‘abc‘], (‘python‘, ‘learn‘))

1.4方法

dir(tuple)
[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘count‘, ‘index‘]

2、字典(dictionary)

字典中的"键"必须是不可变的数据类型:"值"可以是任意数据类型

2.1创建字典

>>> mydict1 = {}
>>> mydict1
{}
>>> mydict2 = {‘name‘:‘zhang‘,‘site‘:‘bokeyuan‘,‘language‘:‘python‘}
>>> mydict2
{‘name‘: ‘zhang‘, ‘site‘: ‘bokeyuan‘, ‘language‘: ‘python‘}   #"键/值对" 前面的叫做(key),后面的叫做值(value)

2.2增加键值对

>>> mydict2[‘name2‘] = "taj"   #追加键值对,内存位置不变,它是可变的
>>> mydict2
{‘name‘: ‘zhang‘, ‘site‘: ‘bokeyuan‘, ‘language‘: ‘python‘, ‘name2‘: ‘taj‘}  

#方法2>>> name = (["first","Google"],["second","Yahoo"])

  >>> type(name)
  <class ‘tuple‘>
  >>> website = dict(name)

#或
  >>> ad = dict(name = ‘tajzhang‘,ahe = 22)  
  >>> ad
  {‘name‘: ‘tajzhang‘, ‘ahe‘: 22}

#方法3

>>> website = {}.fromkeys(("third","forth"),"facebook")
  >>> website
  {‘third‘: ‘facebook‘, ‘forth‘: ‘facebook‘}

2.3访问字典的值

>>> mydict2 = {‘name‘:‘zhang‘,‘site‘:‘bokeyuan‘,‘language‘:‘python‘}
>>> mydict2["name"]
‘zhang‘

2.4基本操作

len(d),返回字典(d)中的键值对的数量

d[key],返回字典(d)中的键(key)的值

d[key]=value,将值(value)赋给字典(d)中的键(key).

del d[key],删除字典(d)的键(key)项(将该键值对删除).

key in d,检查字典(d)中是否含有键为key的项

2.5字符串格式化输出

>>> city_code = {"suzhou":"0512","ttangshan":"0315","huangzhaou":"0571"}
>>> "Suzhou is a beautiful city, its area code is {suzhou}".format(**city_code)
>>> temp = "<html><head><title>{lang}<title><body><p>My name is {name}.<p><body></head><html>"
>>> my = {"name":"qiwsir","lang":"python"}
>>> temp.format(**my)
‘<html><head><title>python<title><body><p>My name is qiwsir.<p><body></head><html>‘
#实际应用场景

2.6字典的方法

python重要概念:对象有类型,变量无类型

1)copy,复制,表层id()不同,如果有多层序列类型,则调用相同id

d1 = d.copy()

2)d("key").remove("value")

3)d.clean()  清空字典为空字典

4)del d  删除字典

5)get 通过键取值

>>> d = {‘lang‘:‘python‘}
>>> d.get(‘lang‘)
‘python‘
>>> d.get(‘name‘)   #不会报错,较为宽容

6)setdefault

>>> d
{‘lang‘: ‘python‘}
>>> d.setdefault("lang")    #与get类似返回值
‘python‘
>>> d.setdefault("name","tajzhang")  #也可以直接添加键值
‘tajzhang‘
>>> d
{‘lang‘: ‘python‘, ‘name‘: ‘tajzhang‘}
>>> d.setdefault("name","zhang2")     #修改值不生效
‘tajzhang‘
>>> d
{‘lang‘: ‘python‘, ‘name‘: ‘tajzhang‘}
>>> d.setdefault(‘web‘)                      #可添加一个空的键
>>> d
{‘lang‘: ‘python‘, ‘name‘: ‘tajzhang‘, ‘web‘: None}

7)items,keys,values 三种字典扩展类型

>>> dd = {‘name‘:‘tajzhang‘,‘lang‘:‘python‘,‘web‘:‘www.google.com‘}
>>> dd_kv = dd.items()
>>> dd_kv
dict_items([(‘name‘, ‘tajzhang‘), (‘lang‘, ‘python‘), (‘web‘, ‘www.google.com‘)])
>>> type(dd_kv)
<class ‘dict_items‘>
>>> dd.keys()
dict_keys([‘name‘, ‘lang‘, ‘web‘])
>>> dd.values()
dict_values([‘tajzhang‘, ‘python‘, ‘www.google.com‘])

8)pop,popitems

>>> dd
{‘name‘: ‘tajzhang‘, ‘lang‘: ‘python‘, ‘web‘: ‘www.google.com‘}
>>> dd.pop(‘name‘)     #指定删除
‘tajzhang‘
>>> dd.pop(‘name‘)     #不存在则删除报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘name‘
>>> dd
{‘lang‘: ‘python‘, ‘web‘: ‘www.google.com‘, ‘name‘: ‘zhang2‘}
>>> dd.popitem()    #与listpop方法类似,不指定值随机删除(因为字典是无序的),当字典为空时会报错
(‘name‘, ‘zhang2‘)  #返回一个元祖

9)update更新字典内容

>>> d1 = {"lang":‘python‘}
>>> d2 = {‘song‘:‘I dreamed a dream‘}
>>> d1.update(d2)    #把d2内容更新到d1中,d2不变
>>> d1
{‘lang‘: ‘python‘, ‘song‘: ‘I dreamed a dream‘}
>>> d2
{‘song‘: ‘I dreamed a dream‘}
>>> d2
{‘song‘: ‘I dreamed a dream‘}
>>> d2.update([("name","qiwsir"),("web","itdiffer.com")])   #方法2
>>> d2
{‘song‘: ‘I dreamed a dream‘, ‘name‘: ‘qiwsir‘, ‘web‘: ‘itdiffer.com‘}

2.7引入深度copy,不管数据多少层都是真复制 不同id()内存地址

>>> x = {‘lang‘:[‘python‘,‘java‘],‘name‘:‘qiwsir‘}
>>> import copy
>>> z = copy.deepcopy(x)
>>> z
{‘lang‘: [‘python‘, ‘java‘], ‘name‘: ‘qiwsir‘}
>>> id(x["lang"])
4339599752
>>> id(z["lang"])
4339599880

3、集合

>>> s1 = set("tajzhang")    #创建集合
>>> s1
{‘h‘, ‘j‘, ‘a‘, ‘g‘, ‘z‘, ‘t‘, ‘n‘}
>>> s2 = set([123,"google","face","book","facebook","book"])  #指定创建
>>> s2
{‘google‘, ‘facebook‘, 123, ‘book‘, ‘face‘}
>>> type(s2)
<class ‘set‘>>>> s3 = {"facebook",123}  #直接创建>>> s3{123, ‘facebook‘}>>> type(s3)<class ‘set‘>
时间: 2024-11-02 16:31:04

老齐python-基础4(元祖、字典、集合)的相关文章

16、python基础学习-元祖

1 #!/usr/bin/env python 2 #__author: hlc 3 #date: 2019/5/26 4 #元祖被称为只读列表,即数据可以被查询,不能被修改,切片的方式同样适用于元祖 5 #元祖写在小括号里面,使用逗号隔开,元祖中可以包含列表,不想被修改可以使用元祖 6 #元祖中一个值也需要在后面添加一个逗号,(3,) 7 8 # a = (1,2,3,4,5,6,7) 9 # b = a[0:3] #对元祖a进行切片 10 # print(b) #(1, 2, 3) 11 1

python基础--4 元祖

#元组,元素不可被修改,不能被增加或者删除 #tuple,有序 tu=(11,22,33,44,55,33) #count 获取指定元素在元祖中出现的次数 print(tu.count(33)) #index获取元素的下标值,可以设置起始和结束位置 print(tu.index(33,3,8)) tu=(1,2,3,3,(455,666,888,),({"11":22,"name":"han"})) v=list(tu)#通过类型转换修改原来tu

python----基础之数据类型(元祖,字典,集合)

元祖 元祖的定义和特性 定义:列表已经介绍过,现在介绍一种与类表相似的类型,叫做元祖,只不过把[]改成(). 特性: 1.可以存放多个指 2.不可变 3.按照从左往右的顺序定义元祖的元素,下标从0开始依次顺序访问,有序 元祖的创建与常用类型 1 # 创建 2 >>> we = (11, 22, 33, 44, 55) 3 >>> we 4 (11, 22, 33, 44, 55) 5 >>> type(we) 6 <class 'tuple'&g

what&#39;s the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法

计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中==比较的是值,is比较的是id.比较运算只能在同种类型下进行比较.字符串的比较是按照顺序依次进行比较.逻辑运算的顺序先后为要用括号来表示. 基本运算符如下: 算术运算 以下假设a=10,b=20 比较运算 以下假设a=10,b=20 赋值运算 逻辑运算  成员运算 身份运算 what's the 内

python学习day-3 列表 元祖 字典

一.列表list a.基础 1. li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True] 中括号括起来:,分割每个元素:列表中的元素可以是数字,字符串,列表,布尔值......:列表可以嵌套 (他就是个集合,内部放置任何东西) 2.可以进行索引,切片取值 li = [1, 12, 9, "age", ["

python中的元祖与字典

元祖的介绍 python中的元祖与列表类似,不同之处在于元祖的元素不可修改.元祖使用小括号,列表使用方括号 <1>访问元祖                                    执行结果: <2>修改元祖                                         执行结果: 说明:python中不允许修改元祖的数据,包括不能删除其中的值 <3>元祖的内置函数count.index index和count与字符串和列表中的用法相同 例

老王python基础篇--python, 视频, 教程, 视频教程, 基础

老王python基础篇 基础篇11-python基本数据结构-元组和集合.rar 基础篇19-python语句与数据结构应用.rar 基础篇21-文本操作应用.rar 基础篇3-虚拟机安装xubuntu开发环境.rar 基础篇17-python语句1.2.rar 基础篇10-python基本数据结构-列表应用.rar 基础篇9-python基本数据结构-列表.rar 基础篇5-python基本数据类型讲解1.1.rar 基础篇18-基础篇综合习题.rar 基础篇8-python基本数据类型习题解

字符串 数字 列表 元祖 字典 的不同分类and集合的概念

可变不可变 1.可变:列表 字典 2.不可变:字符串 数字 元祖 访问顺序: 1.顺序访问:字符串 列表 元祖 2.映射:字典 3.直接访问:数字 存放元素个数: 容器类型:列表 元祖 字典 原子:数字 字符串 id(变量名)可以查出储存的位置 s={1,2,3,3,9,8,8} print(id(s)) 41383080 集合(set): 1.不同元素组成 2.无序 3.集合中元素必须是不可变类型 例如: s={1,2,3,3,9,8,8} print(type(s)) 输出 <class '

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai