CSIC_716_20191106【列表、元组、字典、集合】
python的数据类型及其内置方法
一、列表(续)
list.count( )、list.index( )
- list = ['1', '2', '3', '2', 'a', 'b', 'c', 'a']
- print(list.count('a')) # 用于统计某个元素的个数
- print(list.index('a', 4, )) # 查指定字符的第一个索引位置,如果查不到就会报错,查找范围可以指定
切片:https://www.jianshu.com/p/15715d6f4dad
list.sort( ) 、sorted(list)
区别:sorted(list)排完之后会生成新的列表,list.sort( )是在原列表操作。
- list2=[1, 4, 3, 5, 7]
- list2.sort(reverse=True) # 若reverse参数不写,默认为False,按照ASCII码从小到大排
- print(list2) # [7, 5, 4, 3, 1]
- list3=[1, 4, 3, 5, 7]
- print(sorted(list3, reverse=True)) # [7, 5, 4, 3, 1]
- print(list3) # [1, 4, 3, 5, 7]
list.clear( ) 清除
- list4 = [1, 4, 3, 5, 7]
- list4.clear()
- print(list4) # []
list.reverse( ) 反转排序
- list4 = [1, 4, 3, 5, 7]
- list4.reverse()
- print(list4) # [7, 5, 3, 4, 1]
Note that items in the sequence s are not copied; they are referenced multiple times. This often haunts new Python programmers; consider:
- >>> lists = [[]] * 3
- >>> lists
- [[], [], []]
- >>> lists[0].append(3)
- >>> lists
- [[3], [3], [3]]
What has happened is that [[]]
is a one-element list containing an empty list, so all three elements of [[]] * 3
are references to this single empty list. Modifying any of the elements of lists
modifies this single list. You can create a list of different lists this way:
- >>> lists = [[] for i in range(3)]
- >>> lists[0].append(3)
- >>> lists[1].append(5)
- >>> lists[2].append(7)
- >>> lists
- [[3], [5], [7]]
二、元组 tuple
定义:通过小括号存储数据,数据间通过逗号分隔,元组的值不允许改变。
元组可以通过索引取值
- tuple = (1, 2, 3)
- print(tuple[0]) # 1
索引切片 (取头不取尾)
- tuple = (1, 2, 3)
- print(tuple[0:1]) # (1,)
注意:如果元组中只有一个元素,一定要在末尾打上逗号,否则会默认为字符串
- tuple2 = (1)
- tuple3 = (1,)
- print(type(tuple2)) # <class 'int'>
- print(type(tuple3)) # <class 'tuple'>
成员运算 in ;not in
- tuple = (1, 2, 3)
- print( 1 not in tuple) # False
len( ) 元素的个数
- tuple = (1, 2, 3)
- print(len(tuple)) # 3
元组的自带方法 tuple.count( )、tuple.index( )
- tuple = ('1', '2', '3', '2', 'a', 'b', 'c', 'a')
- print(tuple.count('a')) # 2
- print(tuple.index('a')) # 4
- print(tuple.index('a', 5,)) # 7
总结:元组 有序的,不可变的,存多个值
三、字典
字典的定义有三种方式:
- '''
- 字典的三种定义方式
- '''
- dict1 = {'name': 'abc', 'age': 16}
- print(dict1) # {'name': 'abc', 'age': 16}
- dict2 = dict({'name': 'abc', 'age': 16})
- print(dict2) # {'name': 'abc', 'age': 16}
- list1 = ['name', 'age']
- list2 = ['abc', 16]
- dict4 = zip(list1, list2)
- for j in dict4:
- print(j, type(j), end=' ',) #('name', 'abc') <class 'tuple'> ('age', 16) <class 'tuple'>
- print()
- dict5 = dict(zip(list1, list2)) # 通过dict()将zip类型转换成dict类型
- print(dict5) # {'name': 'abc', 'age': 16}
dict.get( )
- '''
- get 方法
- '''
- dict1 = {'name': 'abc', 'age': 16}
- print(dict1.get('name')) # abc
- print(dict1.get('name','789')) # abc
- print(dict1.get('gender', 'male')) # male
dict.get( )的使用场景:
将get的第一个参数做成用户界面传入的变量,当成dict的key,第二个参数做成错误提示。如果传入的变量不是dict的key,则会输出错误提示。
dict.setdefault( )
注意setdefault( )和get( )的区别
- '''
- get 方法
- setdefault方法
- 辨析
- '''
- dict1 = { }
- print(dict1.get('name')) # None ()默认值
- print(dict1) # { }
- print(dict1.get('name', 'abc')) # abc
- print(dict1) # { }
- dict2 = { }
- print(dict2.setdefault('name')) # None ()默认值
- print(dict2) # {'name': None}
- print(dict2.setdefault('name', 'abc')) # None
- print(dict2) # {'name': None}
- print(dict2.setdefault('gender', 'male')) # male
- print(dict2) # {'name': None, 'gender': 'male'}
总结:
使用dict.get( )方法,对dict不会造成任何影响。
如果get中的第一个参数key在dict中,则返回dict中的value,否则返回get方法的第二个参数,如果没有参数,则返回默认值None;
使用dict.getdefault( )方法,对dict会造成影响。
如果setdefault中的第一个参数key在dict中,则返回dict中的value;否则返回getdefault方法的第二个参数,如果没有参数,则返回None,同时,将key和第二个参数(默认None)以键值对形式存入dict;
dict.keys( ) 、dict.values( ) 、dict.items( )
- '''
- dict.keys() 取所有的key
- dict.values() 取所有的value
- dict.items() 取所有的键值对
- '''
- dict1 = {'name': 'abc', 'age': 16}
- print(dict1.keys()) # dict_keys(['name', 'age'])
- for key in dict1.keys():
- print(key, end=' ') # name age
- print(dict1.values()) # dict_values(['abc', 16])
- for value in dict1.values():
- print(value, end=' ') # abc 16
- print(dict1.items()) # dict_items([('name', 'abc'), ('age', 16)])
- for key, value in dict1.items():
- print(key, value, end=' ') # name abc age 16
dict.pop( key )
指定key进行删除,dict.pop( key ) 的返回值为该key对应的value
dict.popitem( )
随机删除一个键值对,dict.popitem( ) 的返回值为被删除的键值对,返回值的类型为tuple元组
dict1.update( dict2 )
- '''
- dict1.update( dict2)
- 用dict2来更新dict1
- 简言之,向dict1的序列中插dict2,key相同则更新value,无则增加key-value。
- '''
- dict1 = {'name': 'abc', 'age': 16}
- dict2 = {'name': 'zhang'}
- dict3 = {'gender': 'femal'}
- dict3.update(dict1)
- print(dict3) # {'gender': 'femal', 'name': 'abc', 'age': 16}
- dict1.update(dict2)
- print(dict1) # {'name': 'zhang', 'age': 16}
dict.fromkeys( parameter1 , parameter2) parameter1必须是可迭代对象
通过fromkeys生成的字典,key为parameter1中的各个元素,所有的value全部为parameter2
- dict1 = dict.fromkeys(range(3), 'csic')
- print(dict1) # {0: 'csic', 1: 'csic', 2: 'csic'}
总结 字典 无序的,可变的,存多个值
四、集合
集合的用途是去重和关系运算
集合通过大括号存储,每个元素以逗号分隔,
定义空集合时,必须使用set( )方式
- ss1 = set(range(3)) # set()的参数必须是可迭代对象,或者为空
- print(ss1) # {0, 1, 2}
- print(type(ss1)) # <class 'set'>
集合里面不能存重复的元素
- ss2 = {1, 2, 3, 1, 2, 1, 3}
- print(len(ss2)) # 3
- print(ss2) # {1, 2, 3}
总结
set集合是无须的,存多个值,可变的,集合的可变仅限于增加和删除,不能对集合现有的元素进行修改。
frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。一旦创建便不能更改,没有add,remove方法。
CSIC_716_20191106【列表、元组、字典、集合】的更多相关文章
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- python_列表——元组——字典——集合
列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)
列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...
- Day 07 数据类型的内置方法[列表,元组,字典,集合]
数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...
- python 中列表 元组 字典 集合的区别
先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
- python 列表 元组 字典 集合
列表 lst = [i for i in range(10)] 切片 # 把下标小于2的显示出来 print(lst[:2]) # 把10个数有大到小输出 print(lst[::-1]) # 把下标 ...
- Python 列表&元组&字典&集合
列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...
随机推荐
- 6-MySQL-Ubuntu-操作数据表的基本操作(一)
注: SQL语句的关键字不区分大小写,如select 和Select都可以 (1) 查看当前使用的数据库; select database(); (2) 使用某数据库或切换到某数据库 use 数据库名 ...
- Error:ORA-00937: 非单组分组函数错误
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/istend/article/details/34429721 ORA-00937: 非单组分组函数错 ...
- pytest_fixture--scope="session"
import pytest@pytest.fixture(scope="session")def login(): print("\n输入用户名密码登陆! configt ...
- python接口自动化(Cookie_绕过验证码登录)
python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...
- 在 Keil uVision4 MDK下配置开发STM32F103Z完整教程
转载的,请原作者勿怪,以下为原链接: http://www.51hei.com/bbs/dpj-30359-1.html(欢迎直接查看原作者) 环境搭建: 1.安装 Keil uVision4 MDK ...
- 经典单调栈最大子矩形——牛客多校第二场H
题目是求次大子矩形,那么在求最大子矩形的时候维护M1,M2即可 转移M2时比较的过程要注意一下 #include<bits/stdc++.h> using namespace std; # ...
- NOIp2018集训test-9-4
老张让我们2.5h考NOI%你题,喵喵喵? 因为今(我)天(实)的(在)题(太)鬼(弱)畜(了)了,我还只改了t1. Problem A. reorder 考试的时候大家都写了最长不降子序列,然后全员 ...
- NX二次开发-UFUN获取当前所在的模块UF_ask_application_module
NX9+VS2012 #include <uf.h> #include <NXOpen/UI.hxx> #include <NXOpen/MenuBar_MenuBarM ...
- NX二次开发-UFUN获取直线的两个端点UF_CURVE_ask_line_data
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_ui.h> UF_initialize(); ...
- <Java编程思想>读书笔记(1)-对象导论、一切都是对象
1.面向对象编程:OOP (Object-oriented Programming) 2.Alan Kay 总结的面向对象语言5个基本特性: 1) 万物皆为对象 2) 程序是对象的集合,他们通过发送消 ...