Python容器:列表、元组、字典与集合

列表:

  1.列表 的创建

    使用[ ] 或者 list()创建列表:empty_list = [ ]  或者 empty_list= list()

    使用list()将其他数据类型转换成列表  方括号[ ]列表 圆括号( )元组

        >>> list('cat')
        ['c', 'a', 't']

    使用[offset]获取元素

    >>> marxes = ['Groucho', 'Chico', 'Harpo']
    >>> marxes[0]
    'Groucho'

    包含列表的列表: 列表可以包含各种类型的元素,包括其他列表

>>> small_birds = ['hummingbird', 'finch']
>>> extinct_birds = ['dodo', 'passenger pigeon', 'Norwegian Blue']
>>> carol_birds = [3, 'French hens', 2, 'turtledoves']
>>> all_birds = [small_birds, extinct_birds, 'macaw', carol_birds]

=================================================================

        

>>> all_birds
[['hummingbird', 'finch'], ['dodo', 'passenger pigeon', 'Norwegian Blue'], 'macaw',
[3, 'French hens', 2, 'turtledoves']]

        获取列表中字子列表的元素:

>>> all_birds[1][0]
'dodo'

   2、列表操作

   使用[offset]修改元素

>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes[2] = 'Wanda'
>>> marxes
['Groucho', 'Chico', 'Wanda']

  指定范围并使用切片提取元素

>>> marxes = ['Groucho', 'Chico,' 'Harpo']
>>> marxes[0:2]
['Groucho', 'Chico']

  使用append()添加元素至尾部

>>> marxes.append('Zeppo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']

  使用extend()或+=合并列表

  

>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'Karl']
>>> marxes.extend(others)
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']

  使用insert()在指定位置插入元素

  >>> marxes.insert(3, 'Gummo')
  >>> marxes
  ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
  >>> marxes.insert(10, 'Karl')
  >>> marxes
  ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Karl']

  使用del删除指定位置的元素

    del marxes[-1]

  使用remove()删除具有指定值的元素

    >>> marxes.remove('Gummo')

  使用pop()获取并删除指定位置的元素

  >>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
  >>> marxes.pop()
  'Zeppo'
>>> marxes
  ['Groucho', 'Chico', 'Harpo']
  >>> marxes.pop(1)
  'Chico'
  >>> marxes
  ['Groucho', 'Harpo']

  使用index()查询具有特定值的元素位置

    >>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
    >>> marxes.index('Chico')
    1

  使用in判断值是否存在

    >>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
    >>> 'Groucho' in marxes

  使用count()记录特定值出现的次数:使用count() 可以记录某一个特定值在列表中出现的次数

      >>> marxes.count('Harpo')

  使用join()转换为字符串

      >>> marxes = ['Groucho', 'Chico', 'Harpo']
      >>> ', '.join(marxes)
      'Groucho, Chico, Harpo'

  使用sort()重新排列元素:列表方法sort() 会对原列表进行排序,改变原列表内容;
              通用函数sorted() 则会返回排好序的列表副本,原列表内容不变。

    

  使用len()获取长度

    >>> marxes = ['Groucho', 'Chico', 'Harpo']
    >>> len(marxes)
    3

  使用=赋值,使用copy()复制  

    >>> a = [1, 2, 3]
    >>> a
    [1, 2, 3]
    >>> b = a
    >>> b
    [1, 2, 3]
    >>> a[0] = 'surprise'
    >>> a
    ['surprise', 2, 3]

  元组和列表:

  在许多地方都可以用元组代替列表,但元组的方法函数与列表相比要少一些——元组没有
  append()、insert(),等等——因为一旦创建元组便无法修改。既然列表更加灵活,那为
  什么不在所有地方都使用列表呢?原因如下所示:
    • 元组占用的空间较小
    • 你不会意外修改元组的值
    • 可以将元组用作字典的键(详见3.4 节)
    • 命名元组(详见第6 章“命名元组”小节)可以作为对象的替代
    • 函数的参数是以元组形式传递的

字典:

  字典新建:

>>> empty_dict = {}

  使用dict() 转换  

>>> lol = [ ['a', 'b'], ['c', 'd'], ['e', 'f'] ]
>>> dict(lol)
{'c': 'd', 'a': 'b', 'e': 'f'}

字典中元素的顺序是无关紧要的,实际存储顺序可能取决于你添加元
素的顺序。

可以对任何包含双值子序列的序列使用dict(),下面是其他例子。
包含双值元组的列表:

  >>> lot = [ ('a', 'b'), ('c', 'd'), ('e', 'f') ]
  >>> dict(lot)
  {'c': 'd', 'a': 'b', 'e': 'f'}

  包含双值列表的元组:

  >>> tol = ( ['a', 'b'], ['c', 'd'], ['e', 'f'] )
  >>> dict(tol)
  {'c': 'd', 'a': 'b', 'e': 'f'}

  双字符的字符串组成的列表:

  >>> los = [ 'ab', 'cd', 'ef' ]
  >>> dict(los)
  {'c': 'd', 'a': 'b', 'e': 'f'}

  双字符的字符串组成的元组:

  >>> tos = ( 'ab', 'cd', 'ef' )
  >>> dict(tos)
  {'c': 'd', 'a': 'b', 'e': 'f'}

  使用[key]添加或修改元素

>>> pythons = {
... 'Chapman': 'Graham',
... 'Cleese': 'John',
... 'Idle': 'Eric',
... 'Jones': 'Terry',
... 'Palin': 'Michael',
... }
>>> pythons
{'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael',
'Chapman': 'Graham', 'Idle': 'Eric'} #使用[KEY]值,添加元素
>>> pythons['Gilliam'] = 'Gerry'
>>> pythons
{'Cleese': 'John', 'Gilliam': 'Gerry', 'Palin': 'Michael',
'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'} #使用[KEY]值,修改元素 >>> pythons['Gilliam'] = 'Terry'
>>> pythons
{'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael',
'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}

使用update()合并字典

>>> pythons = {       #定义一个字典
... 'Chapman': 'Graham',
... 'Cleese': 'John',
... 'Gilliam': 'Terry',
... 'Idle': 'Eric',
... 'Jones': 'Terry',
... 'Palin': 'Michael',
... }
>>> pythons
{'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael',
'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}
#定义另一个字典
>>> others = { 'Marx': 'Groucho', 'Howard': 'Moe' }
#使用.update(),合并字典
>>> pythons.update(others)
>>> pythons
{'Cleese': 'John', 'Howard': 'Moe', 'Gilliam': 'Terry',
'Palin': 'Michael', 'Marx': 'Groucho', 'Chapman': 'Graham',
'Idle': 'Eric', 'Jones': 'Terry'}

使用del删除具有指定键的元素

>>> del pythons['Marx']  #删除字典中的元素
>>> pythons
{'Cleese': 'John', 'Howard': 'Moe', 'Gilliam': 'Terry',
'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric',
'Jones': 'Terry'}
>>> del pythons['Howard']
>>> pythons
{'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael',
'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}

使用clear()删除所有元素

使用clear(),或者给字典变量重新赋值一个空字典({})可以将字典中所有元素删除:

>>> pythons.clear()
>>> pythons
{}
>>> pythons = {}
>>> pythons
{}

使用in判断是否存在

>>> pythons = {'Chapman': 'Graham', 'Cleese': 'John',
'Jones': 'Terry', 'Palin': 'Michael'} #测试XXX是否在字典中
>>> 'Chapman' in pythons
True

使用[key]获取元素

>>> pythons['Cleese']
'John'

keys()、values()、items()、=、copy()

使用keys()获取所有键、使用values()获取所有值、使用items()获取所有键值、使用=赋值,使用copy()复制

>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> signals.keys() #使用keys()获取所有键
dict_keys(['green', 'yellow', 'red'])
>>> list( signals.keys() )
['green', 'yellow', 'red']
>>> list( signals.values() )#使用values()获取所有值
['go', 'go faster', 'smile for the camera']
>>> list( signals.items() ) #使用items()获取所有键值对
[('green', 'go'), ('yellow', 'go faster'), ('red', 'smile for the camera')]
>>> save_signals = signals #使用=赋值
>>> signals['blue'] = 'confuse everyone'
>>> save_signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'}
#对字典内容进行的修改会反映到所有与之相关联的变量名上
#=================================
# 使用copy()复制
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> original_signals = signals.copy()
>>> signals['blue'] = 'confuse everyone'
>>> signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'}
>>> original_signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}

集合:

  1、使用set()创建集合

>>> empty_set = set()
>>> empty_set
set()
>>> even_numbers = {0, 2, 4, 6, 8}
>>> even_numbers
{0, 8, 2, 4, 6}
>>> odd_numbers = {1, 3, 5, 7, 9}
>>> odd_numbers
{9, 3, 1, 5, 7} #集合中的元素是无序的

  2、使用set()将其他类型转换为集合

>>> set( 'letters' )
{'l', 'e', 't', 'r', 's'} #转换以后,重复的元素会去重

    用列表建立集合:

>>> set( ['Dasher', 'Dancer', 'Prancer', 'Mason-Dixon'] )
{'Dancer', 'Dasher', 'Prancer', 'Mason-Dixon'}

    再试试元组:

>>> set( ('Ummagumma', 'Echoes', 'Atom Heart Mother') )
{'Ummagumma', 'Atom Heart Mother', 'Echoes'} #使用元组建立集合

    当字典作为参数传入set() 函数时,只有键会被使用:  

>>> set( {'apple': 'red', 'orange': 'orange', 'cherry': 'red'} )
{'cherry', 'apple', 'orange'}

    使用in测试值是否存在    

>>> drinks = {
'martini': {'vodka', 'vermouth'},
'black russian': {'vodka', 'kahlua'},
'white russian': {'cream', 'kahlua', 'vodka'},
'manhattan': {'rye', 'vermouth', 'bitters'},
'screwdriver': {'orange juice', 'vodka'}
}
>>> for name, contents in drinks.items(): # 使用IN值测试值是否存在
if 'vodka' in contents : # 使用IN值测试值是否存在 print(name) martini
black russian
white russian
screwdriver
>>> for name, contents in drinks.items():
if 'vodka' in contents and not ('vermouth' in contents or 'cream' in contents):
print(name) black russian
screwdriver

合并及运算符

交集运算:&  或者 x.intersection

>>> a = {1,2}
>>> b = {3,4}
>>> a & b
set()
>>> a.intersection(b)
set()

异或运算

#使用^ 或者symmetric_difference() 可以获得两个集合的异或集
>>> a ^ b
{1, 3}
>>> a.symmetric_difference(b)
{1, 3} #使用<= 或者issubset() 可以判断一个集合是否是另一个集合的子集(第一个集合的所有
元素都出现在第二个集合中):
>>> a = {1,3}
>>> b = {2,4}
>>> c = {1}
>>> d = {2}
>>> a <= b
False
>>> b <= a
False
>>> c <= a
True
>>> c <= b
False
>>> d <= a
False
>>> d <= b # 超集与子集正好相反(第二个集合的所有元素都出现在第一个集合中),使用>= 或者
issuperset() 可以进行判断:
>>> a >= b
False
>>> a >= c
True
>>> a >=d
False # 子集 真子集
>>> a > a
False
>>> a < a
False
>>> d > d
False
>>> d < d
False
>>> d == d
True
>>> a >= a
True
>>> d >= d
True
>>> a <= a
True
>>> a < a
False
>>> a > a
False

字典与集合:

用方括号([])创建列表,

使用逗号创建元组(,)

使用花括号({})创建字典

在每一种类型中,都可以通过方括号对单个元素进行访问:

自定义数据结构:

在创建自定义结构的过程中,唯一的限制来自于内置数据类型本身。

例如:字典的键必须为不可变对象,所以列表、字典以及集合都不能作为字典的键,但是元组可以作为字典的键。

    

Python 学习笔记(1)Python容器:列表、元组、字典与集合的更多相关文章

  1. python 学习笔记(一):在列表、字典、集合中根据条件筛选数据

    一.在列表中筛选数据 在列表中筛选出大于等于零的数据,一般通用的用法代码如下: data = [3, -9, 0, 1, -6, 3, -2, 8, -6] #要筛选的原始数据列表 result = ...

  2. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  3. python学习笔记-(四)列表&元组

    1.列表及元组操作 1.1 列表 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 定义列表: >>> namelist = ...

  4. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  5. Python学习,第五课 - 列表、字典、元组操作

    本篇主要详细讲解Python中常用的列表.字典.元组相关的操作 一.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 通过下标获取元素 #先定义一个列表 le ...

  6. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  7. Python学习笔记 | 关于python数据对象 hashable & unhashable 的理解

    文章目录 写在前面 hashable & unhashable mutable & immutable 实例检测 后续思考 参考文章 写在前面 Hash(哈希.散列)是一个将大体量数据 ...

  8. python学习笔记:第五天( 字典)

    Python3 字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格 ...

  9. python学习笔记之——python函数

    1.定义一个函数 你可以定义一个自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定 ...

  10. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

随机推荐

  1. NSmutableArray 的实现原理机制

    古老的C数组: 优点:查询速度很快,直接通过下表找到对应的值 缺点:修改.删除数据很慢,需要移动基于所有的其他的元素   插入和删除一个元素,需要移动后面所有的元素 改进的目标:实现快速增加,删除 N ...

  2. Kafka Topic的详细信息 捎带主要的安装步骤

    1. 安装步骤 Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不需要创建myid文件), 主要是针对每个Kafka服务器配置一个单独的 ...

  3. 分布式流处理框架 Apache Storm —— 编程模型详解

    一.简介 二.IComponent接口 三.Spout     3.1 ISpout接口     3.2 BaseRichSpout抽象类 四.Bolt     4.1 IBolt 接口     4. ...

  4. 使用vscode调试Nodejs

    之前想用vscode调试nodejs,总是不成功,也走很多弯路,现在记录下来. 首先新建一个文件夹,用vscode打开这个文件夹, 用vscode自带的终端执行npm init,输入名称,其他的可不输 ...

  5. Redis 在java中的使用(登录验证,5分钟内连续输错3次密码,锁住帐号,半小时后解封)(三)

    在java中使用redis,做简单的登录帐号的验证,使用string类型,使用redis的过期时间功能 1.首先进行redis的jar包的引用,因为用的是springBoot,springBoot集成 ...

  6. 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM

    CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一 ...

  7. NumPy基础操作

    NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...

  8. Knative 初体验:Build Hello World

    作者 | 阿里云智能事业群技术专家 冬岛 Build 模块提供了一套 Pipeline 机制.Pipeline 的每一个步骤都可以执行一个动作,这个动作可以是把源码编译成二进制.可以是编译镜像也可以是 ...

  9. 大数据虚拟混算平台Moonbox配置指南

    一.环境准备 已安装Apache Spark 2.2.0(此版本仅支持Apache Spark 2.2.0, 其他Spark 版本后续会兼容) 已安装MySQL并启动,且开启远程访问 各安装节点已经配 ...

  10. easyui combobox name选择器

    HTML: <input name="myinputdom" id="myinputdom" class="easyui-combobox my ...