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版本,以及以后分享的 ...
随机推荐
- HTML5学习笔记(二十九):Cookie和Session
HTTP协议本身是无状态的,这和HTTP最初的设计是相符的,每次请求都是创建一个短连接,发送请求,得到数据后就关闭连接.即每次连接都是独立的一次连接. 这样的话,导致的问题就是当我在一个页面登陆了账号 ...
- 【宣讲】德州科技职业学院宣讲关于IT领域趋势分析
12月25日,AICODER马伦老师受德州科技职业学院校领导的邀请,到德州科技职业学院青岛校区洽谈新型的校区合作,创新现有的职业教育的传统模式的束缚,探索新型的职业教育直接跟企业实习实战结合的新型职业 ...
- ng-repeat 的重复问题
如果ng-repeat绑定的数组中元素有重复, 如 $scope.data = [1,2,2] ng-repeat="value in data" //这种写法就会报错,ngRe ...
- HTML 09 web 内容与攻击技术
Servlet 改进 CGI 之前提及的 CGI, 由于每次接到请求, 程序都要跟着启动一次, 因此一旦访问量过大, web 服务器要承担低昂当大的负载, 而 servlet 运行在与 web 服务器 ...
- C#访问gsoap的服务--可用
问题来源: C++开发一个webservice,然后C#开发客户端,这样就需要C#的客户端访问gsoap的服务端.(大家都知道gsoap是C/C++开发webservice的最佳利器) 为什么不考虑直 ...
- JAVA并发编程——守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- DirectX using C++_error X3539:ps1_x is no longer supported...解决方案
问题来源 在研究HLSL时编译一个demo出现了error X3539的问题 解决方案 将代码中的ps_1_1 改为ps_2_0 PixelShader = compile ps_1_1 PS(); ...
- 树莓派mariadb 设置密码
参考: sudo mysql -u root -p select Host,User,plugin from mysql.user where User='root'; plugin(加密方式)是un ...
- ABBYY PDF Transformer+ 给你好看
ABBYY PDF Transformer+是一个新的.全面的巧妙解决PDF文档的工具,它将泰比的光学字符识别(OCR)技术和Adobe®PDF技术完美结合,以确保实现便捷地处理任何类型的PDF文件, ...
- 【转】Yelp是如何实现每天运行数百万个测试的
Yelp每天要运行数百万个测试,确保开发人员提交的代码不会对已有的功能造成破坏.如此巨大规模的测试,他们是怎么做到的呢?以下内容翻译自 Yelp 的技术博客,并已获得翻译授权,查看原文 How Yel ...