python基础之 列表,元组,字典
other
help(str.strip) #查看是否有返回值以及返回值类型
[] :称为索引操作符
1.列表
列表相比字符串来说能存储大量数据的python的基本数据类型,并且也拥有字符串的一些方法(索引,切片等等)
列表是以[]中括号组成,每个元素以,逗号隔开的,容器型数据类型。
列表中的常见的方法
l1 =['kobe','james','t-mac','',789,[123,'admin']]
索引
print(l1[1])
print(ret1,type(ret1))
print(l1[-1]) 切片 顾头不顾腚
print(l1[:4])
print(l1[:5:2]) 倒叙取值
print(l1[-1:-4:-1]) 增加
l1.append('') #追加增加
l1.insert(1,'') #在索引为1的位置插入
l1.extend([123,'ab']) #迭代的而加入是:根据要添加的类型进行一次迭代之后,在添加到列表中。如果添加的时字符串,就分割之后,添加到列表。
#如果添加的是列表,就循环列表,在分别添加到要添加的列表中。和切片修改是同一个意思,说白了迭代增加的必须是可迭代的元素 删除
l1.pop(0) #按照索引删除,会将删除的元素作为返回值返回
l1.remove('kobe') #按照元素删除,不会返回被删数据
l1.clear() #清空列表 del 删除
del l1[0] #1.按照索引删除,默认删除最后一个
del l1[2:5:2] #按照切片(可以加步长)删除
del l1[:] 或者del l1#删除整个列表 改
l1[0] = "男神" #按索引修改,l1[0]指的时位置,修改l1[0]这个位置的元素的值为男神,本意指的li[0]这个元素,但是放在等号左边就是代表位置,要接受新值
l1[:3] = [123,""]或者l1[:3] ="" #按切片范围修改,要添加的内容必须是可迭代元素,和迭代增加一样
l1[1:4:2] = "" #切片(加步长):必须一一对应,改了几个就得写几个修改的值,不能多或少 查
按照索引(index),按照切片(步长查询),列表没有find方法
使用for循环 其他操作
len():去长度 index():通过元素找索引,找到第一个就返回,找不到就报错
l1.sort() 从小到大排序#不会生成新的字符串 l1.sort(reverse=True) #从大到小
l1.reverse()翻转 #不会生成新的字符串
other:
pop():执行后唯一有返回值的
2.元组
python中基础数据类型之一,容器型数据类型,存储大量的数据。只读列表。
元组是()里面的元素以,隔开的数据类型。
其他语言中,没有元组的概念。元组是不可以进行修改的,只能查询。元组中存储的都是重要的数据,个人信息等等。 元组练习
tu1 = (1,'kobe','',[1,2,'mac',True])
print(tu1[0]) #可以索引
print(tu1[:3]) #可以切片
print(tu1[:4:2]) #可以根据步长切片 查:注意:元组只能查不能改,
#根据索引和切片等进行查询或者#根据for循环
for item in tu1:
print(item) other
del tul print(tu1) #删除元组
print(len(tu1)) #查看元组长度
print(tu1.count("")) #查看包含字符个数
print(tu1.index("kobe") #和列表,字符串中使用一样,查找元素的索引 元组真的不能修改么?
tul = ('', True, 456, [123, 'jordan', '中文'])
tul[3].append('')
print(tul)
#:在元组中的元素的是可迭代对象的话,就可以改:儿子不能改,孙子可能改。
有意思的一个问题:
tu = (123,1,'123',True)
print(tu.index(True))
#这个索引不应该是3么? 因为True和false在内存中存储的是1和0,所以tu.index(True) =tu.index(1),打印这个相当于打印print(tu.index(1))的索引,元组中正好有1这个元素,所以打印1这个元素的索引 #坑
(22) --->int类型,不加,都是元素本身
(s) --->字符串类型
3.range
range函数练习
内置函数,python给你提供的一个功能。
将range视为:可控制范围的数字列表。 #打印1-100
for item in range(1,101):
print(item) #打印1-100奇数
for item in range(1,100,2):
print(item) #打印1-100偶数
for item in range(2,102,2):
print(item)
#打印10-1
for item in range(10,0,-1):
print(item, '', end='') 注意:
1.range()的起始位置默认为0
2.python2中是一起全部生成,不用迭代出来,直接打印,python3中是先放在内存里面,等使用了再生成。(这也是python3比python2性能上高的一点)
作业
# 使用循环查找一个字符串中指定字符的所有索引值, 保存在一个列表中,找出所有a的索引值
s = 'abcabcabc'
count = 0
l1=[]
for item in s:
if item == 'a':
l1.append(s.index('a',count,)) #主要是字符串索引可以通过起始位置和结束位置来查找
else:
pass
count += 1
print (l1)
4.字典
为什么要使用元组?
1.列表如果存储的数据较多的话,查询速度会比较慢
2.列表存储数据的关联性不强
字典的查找是根据键值的hash来对应的内存地址进行查找的,比二分法还会快一些
字典介绍:
python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以,逗号分开!
dic = {'name': 'kobe', 'age': 18, 'sex': 'man'} 字典的特点:
1.字典是以键值对形式存储的,
键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。(键唯一;指的是无论添加多少个相同的键,只有最后一个起作用,起到了覆盖的作用)
值:任意数据类型,对象。
2.字典可以存储大量的键值对数据,
3.python3.6之前:字典是无序的。python3.6之后,字典变成有序的。3.7以后确实从语法层面上变得有序了。(3.6中的有序是解释器的作用,不是python的源码特点)
字典的优点:
1,字典存储大量的关系型数据。
2,字典的查询速度非常快。
字典的缺点:
占用空间大
dic ={
'name':'kobe',
'age':40,
'hobby':'wife'
}
增加操作
1.有就修改,没有就添加,根据键值,不会报错
dic['agesdas1']=20
2.有就不变,没有就添加,根据键值,不会报错
dic.setdefault('h') #默认添加None,默认返回键h的值,有返回值
dic.setdefault('name','123')
删除操作
pop() 删除,按照键删除
dic.pop('name') #按照键值删除,默认删除的键值不存在的话会报错
dic.pop('name','没有此键')#第二个参数为提示语,一般设置成None
clear() 清空
dic.clear()
popitem(): 3.6之前版本随机删除,但是3.6版本删除最后一个键值对,因为python3.6版本之前,dict类型是无序的,在3.6版本之后变成有序的了
ref = dic.popitem() 有返回值,是被删除的键值对组成的元组
del删除
del dic['name'] 按照键删除,如果键值不存在会报错
del dic 删除字典
修改操作
1.dic['age']=73 根据键值来修改,没有键值的话就添加
2.update
a.dic.update(abc="123",bcd="456") #有就覆盖,没有键值就增加
b.dic.update(dic2) #将一个字典添加到另一个字典中,dic1里面有和dic2相同的键值,就将dic1中键所对应值修改成dic2中(将dic2中的键值对覆盖追加到dic中)
update里面的键值不能是数字
查操作
print(dic['age']) 如果不存在键,则报错
print(dic.get('ag')) 如果不存在键,返回nono
print(dic.get('ag',"没有此键")) 可设置返回值
print(setdefault.('1'))
formkeys: 用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None
iterable=[1,2] value='a'
v1 = dict.fromkeys(iterable,value)
iterable: 用于创建新的字典的键的可迭代对象(字符串、列表、元祖、字典)。
value: 可选参数, 字典所有键对应同一个值的初始值,默认为None。
print(v) {'1': 'a', '2': 'a'}
other 其他三个类似列表的类型,都可以转化成list,是高仿list,没有索引
print(dic.keys(),type(dic.keys()))
print(dic.values(),type(dic.values()))
print(dic.items()) #可以使用for循环
for k,y in dic.items():
print(k,y)
分别赋值:a =18,b=32,使用一句代码将其调转
a,b=32,18
print(a,b) #a=32,b=18
a,b={'name':'alex','age':73}
print(a,b) #a=name b=age
a,b =[123,2345]
print(a,b) #a=123 b=2345
原理就是将a和b指向的内存地址的标签调换
5.数据类型的比较
数据类型的划分:
容器非容器划分:
容器型数据类型:list,tuple,dict,set。
非容器型数据类型:int str bool
可变与不可变划分:
可变(不可哈希hash)的数据类型:list dict,set
不可变(可哈希hash的)的数据类型: int bool str tuple
序列类型:
6.字典里习题
#将a和b组合成c的样式,并支持扩展
a = [
'a,1',
'b,3,22',
'c,3,4',
'f,5'
] b=[
'a,2',
'b,4',
'd,2',
'e,12'
] c = [
'a,1,2',
'b,3,22,4',
'c,3,4',
'd,2',
'e,12',
'f,5'
] dic ={i[0]:i for i in a}
print(dic)
for ite in b:
if ite[0] in dic:
# if dic.get(ite[0]):
dic[ite[0]] += ite[1:]
else:
dic[ite[0]] = ite
print(list(dic.values()))
python基础之 列表,元组,字典的更多相关文章
- python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)
列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...
- Python入门基础学习(列表/元组/字典/集合)
Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- python基础之列表、字典、元祖等 (二)
一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...
- python基础(五)列表,元组,集合
列表 在python中是由数个有序的元素组成的数据结构,每一个元素对应一个index索引来隐式标注元素在列表中的位置.是python中最常用的一种数据类型.需要注意的是列表中可以有重复相同的数据. 列 ...
- Python基础 之列表、字典、元组、集合
基础数据类型汇总 一.列表(list) 例如:删除索引为奇数的元素 lis=[11,22,33,44,55] #第一种: for i in range(len(lis)): if i%2==1: de ...
- Python 基础-python-列表-元组-字典-集合
列表格式:name = []name = [name1, name2, name3, name4, name5] #针对列表的操作 name.index("name1")#查询指定 ...
- Python初学笔记列表&元组&字典
一.从键盘获取 1 print("请输入") 2 username = input("姓名:") 3 age = input("年龄:") ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
随机推荐
- Cocos 更新时反复杀进程,导致差异更新失效的Bug
Cocos 更新时反复杀进程时,差异更新失效的问题: 问题复现步骤: 1.在project.manifest.temp 文件下载成功后,下载Assets资源的时候杀掉进程 2.重启游戏,继续更新时会使 ...
- SQL递归方式实现省市区县级别查询
数据库脚本 CREATE TABLE [dbo].[Std_Area]( [Id] [int] NOT NULL, [Name] [nvarchar](50) NULL, [ParentId] [in ...
- 不得不看,只有专家才知道的17个SQL查询提速秘诀!
不得不看,只有专家才知道的17个SQL查询提速秘诀! 原创 2018-01-23 布加迪编译 51CTO技术栈 “ 除非你遵循本文介绍的这些技巧,否则很容易编写出减慢查询速度或锁死数据库的数据库代码. ...
- ssh连接服务器失败解决记录
故障:db2inst1用户无法通过ssh连接数据库服务器. 但是root用户可以连接,连接后su – db2inst1用户报错: su: cannot set user id: Resource te ...
- 《FPGA全程进阶---实战演练》第三十二章 Signal Tap II 应用实例
还有几天就要交文章终稿了,三年的研究生生活也快要结束了,时间飞快,岁月如梭,但学习技术的热情仍然不能松懈,不懂的东西太多,需要实时保持奋斗!!过些天会继续更新<FPGA全程进阶---实战演练&g ...
- SAP Parallel Accounting(平行分类账)业务配置及操作手册
目录 SAP Parallel Accounting(平行分类账业务)配置及操作手册 SAP Parallel Accounting(平行分类账业务)配置及操作手册 Overview 业务说明 为了适 ...
- 使用MegaCli监控Linux硬盘
1.首先查看机器是否使用的是MegaRAID卡 dmesg | grep RAID [ 6.932741] scsi host0: Avago SAS based MegaRAID driver 2. ...
- 目前我对ReactNative的了解
1.什么是React? 一个js组件库,不同于angular的是一个完整的framework,React需要像jQuery一样写事件监听逻辑,最大特点是Virtual DOM. 官网:https:// ...
- 使用Pip在离线环境安装Python依赖库
一.安装多个包 1.有网的服务器 1.生成requirement.txt文件 pip freeze >/tmp/wheel_pip/requirements.txt 这个命令会把当前环境下面的p ...
- x264_param_default分析
{ /* 开辟内存空间*/ memset( param, 0, sizeof( x264_param_t ) ); /* CPU自动检测 */ par ...