python定义字典列表_Python基础语法(四)—列表、元组、字典、集合、字符串

列表

基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制;

列表索引值以0为开始值,-1为从未尾的开始位置。

列表可以使用+操作符进行拼接,使用*表示重复。

当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;

列表中的元素可以是不同类型的

列表的使用方式

list = ["zeruns","blog","blog.zeruns.tech",9527,[0,1,2,[1,2]]]#创建一个列表,一个列表里可以有多种数据类型,甚至可以嵌套列表来做二或三维列表

# 0 1 2 3 4

# -5 -4 -3 -2 -1

print(list[0])

print(list[2])

print(list[4][2])

print(list[4][3][0])

print(list[-1])

print(list[-2])

'''

结果:

zeruns

blog.zeruns.tech

2

1

[0, 1, 2, [1, 2]]

9527

'''

列表的基本操作

列表操作符操作符含义< list1 > + < list2 >连接两个列表< list > * < 整数类型 >对列表进行整数次重复< list >[< 整数类型 >]索引列表中的元素len( < seq > )获取列表中元素个数for < var > in < list > :对列表进行循环列举< list >[< 整数类型 > : < 整数类型 >]取列表的一个子序列< expr > in < list >成员检查,判断< expr >是否在列表中

列表的相关方法

方法方法含义< list >.append( x )将元素x增加到列表的最后< list >.sort( )将列表元素排序,默认为升序< list >.reverse( )将列表元素反转< list >.index( )返回第一次出现元素x的索引值< list >.insert( i, x )在位置i处插入新元素x< list >.count( x )返回元素x在列表中的数量< list >.remove( x )删除列表中第一次出现的元素x< list >.pop( i )取出列表中位置i的元素,并删除它

>>> a = [2,0,9,1,5]

>>> b = ['c','w','b','a']

>>> a.append(9)

>>> a

[2, 0, 9, 1, 5, 9]

>>> a.sort()

>>> a

[0, 1, 2, 5, 9, 9]

>>> a.reverse()

>>> a

[9, 9, 5, 2, 1, 0]

>>> b.sort()

>>> b

['a', 'b', 'c', 'w']

>>> a.index(5)

2

>>> a.insert(2,7)

>>> a

[9, 9, 7, 5, 2, 1, 0]

>>> a.count(9)

2

>>> a.remove(9)

>>> a

[9, 7, 5, 2, 1, 0]

>>> a.pop(0)

9

>>> a

[7, 5, 2, 1, 0]

列表推导式列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。data = [i for i in range(10)] #等价于 data = [] for i in range(10): data.append(i) '--------------分割线---------------' data = [2**i for i in range(10)] #等价于 data = [] for i in range(10): data.append(2**i) '--------------分割线---------------' data = [num for num in range(20) if num%2==1] #等价于 data = [] for num in range(20): if num%2==1: data.append(num)

应用一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

答案:

#encoding=utf-8

import random

# 定义一个列表用来保存3个办公室

offices = [[],[],[]]

# 定义一个列表用来存储8位老师的名字

names = ['A','B','C','D','E','F','G','H']

i = 0

for name in names:

index = random.randint(0,2)

offices[index].append(name)

i = 1

for tempNames in offices:

print('办公室%d的人数为:%d'%(i,len(tempNames)))

i+=1

for name in tempNames:

print("%s"%name,end='')

print("\n")

print("-"*20)

运行结果如下:

元组

基本概念元组(tuple)是包含多个元素的类型,元素之间用逗号分割

如:t1 =(123,456,"hello")

可以通过把若干元素放在一对圆括号中创建元组,如果只有一个元素的话则需要多加一个逗号,例如(3,)。

也可以使用tuple()函数把列表、字典、集合、字符串以及range对象、map对象、zip对象或其他类似对象转换为元组。

元组可以是空的,t2=()

一个元组也可以作为另一个元组的元素,此时,作为元素的元组需要增加括号,从而避免歧义,如:t3=(123,456,("hello","world"))

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组的使用

>>> a = ('hello',2020,110)

>>> a

('hello', 2020, 110)

>>> a[1]

2020

元组中的元素值是不允许修改和删除的,但我们可以使用del语句来删除整个元组

>>> a = ('hello',2020,'blog.zeruns.tech')

>>> print(a)

('hello', 2020, 'blog.zeruns.tech')

>>> del a

>>> print(a)

Traceback (most recent call last):

File "", line 1, in

print(a)

NameError: name 'a' is not defined

所谓元组的不可变指的是元组所指向的内存中的内容不可变。

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')

>>> tup[0] = 'g' # 不支持修改元素

Traceback (most recent call last):

File "", line 1, in

TypeError: 'tuple' object does not support item assignment

>>> id(tup) # 查看内存地址

4440687904

>>> tup = (1,2,3)

>>> id(tup)

4441088800 # 内存地址不一样了

字典

基本概念字典是无序的对象集合,使用键-值(key-value) 存储,具有极快的查找速度。

键(key)必须使用不可变类型

同一个字典中,键(key)必须是唯一的

字典的每个键值key= >value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号}中,格式如下所示:

dic = {key1 : value1, key2 : value2 }

字典键一般是唯的,如果重复最后的一一个键值对会替换前面的,值不需要唯一。

键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行>>> hhh = {'website':'blog.zeruns.tech','name':'zeruns'} >>> hhh['website'] 'blog.zeruns.tech'

常用方法

方法描述keys()返回字典中键的列表values()返回字典中值的列表items()返回tuples的列表。每个tuple由字典的键和相应值组成clear()删除字典的所有条目copy()返回字典高层结构的一个拷贝,但不复制嵌入结构,而只复制对那些结构的引用update(x)用字典x中的键值对更新字典内容。get(x[,y]))返回键x,若未找到该键返回none,若提供y,则未找回时返回ystr(x)以字符串形式输出字典xlen(x)返回字典x的元素个数,即键的总数。

>>> hhh = {'website':'blog.zeruns.tech','name':'zeruns'}

>>> hhh.keys()

dict_keys(['website', 'name'])

>>> hhh.values()

dict_values(['blog.zeruns.tech', 'zeruns'])

>>> hhh.items()

dict_items([('website', 'blog.zeruns.tech'), ('name', 'zeruns')])

>>> hhh.copy()

{'website': 'blog.zeruns.tech', 'name': 'zeruns'}

>>> awsl = {'website':'https://blog.zeruns.tech'}

>>> hhh.update(awsl)

>>> hhh

{'website': 'https://blog.zeruns.tech', 'name': 'zeruns'}

>>> hhh.get('website')

'https://blog.zeruns.tech'

>>> hhh.get('hhh','666')

'666'

>>> hhh.clear()

>>> hhh

{}

>>> dict = {'Name': 'zeruns', 'Age': 7, 'Class': 'First'}

>>> str(dict)

"{'Name': 'zeruns', 'Class': 'First', 'Age': 7}"

字典元素修改、添加与删除可以使用字典对象的pop()删除指定“键”对应的元素,同时返回对应的“值"

popitem()方法用于删除字典的一个键对,并返回一个包含两个元素的元组,其中的两个元素分别是字典元素的“键”和“值" .

也可以使用del删除指定的“键”对应的元素。

集合

概述Python集合是无序、可变的容器对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的, 不允许重复,

集合中只能包含数字、字符串、元组等不可变类型的数据,而不能包含列表.字典、集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素。

集合中的元素是无序的,元素存储顺序和添加顺序并不一致。

集合不支持使用下标直接访问特定位置上的元素,也不支持使用random中的choice()函数从集合中随机选取元素,但支持使用random模块中的sample()函数随机选取部分元素。

set(集合)set和dict类似, 也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

set是无序的,重复元素在set中自动被过滤。

可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集(&)、井集(|)、差集(-)等操作。

集合的常用方法s = add(x):将元素x添加到集合s中,如果元素已存在,则不进行任何操作。

s = update(x):将x的元素添加到集合s中,x可以是列表,元组,字典等。

s.pop(x):随机删除集合中的一个元素。

s.remove(x):将元素x从集合s中移除,如果元素不存在,则会发生错误。

s.discard(x):将元素x从集合s中移除,如果元素不存在,不会发生错误。

len(s):计算集合 s 元素个数。

s.clear():清空集合 s。

字符串

概述字符串(str)是用双引号""或者单引号''括起来的一个或多个字符

字符串可以保存在变量中,也可以单独存在

字符串属于不可变对象,所有方法都是返回处理后的字符串或字节串,不对原字符串进行任何修改。

字符串操作字符串之间可以通过**+或***进行连接加法操作(+)将两个字符串连接成为一个新的字符串

乘法操作(*)生成一个由其本身字符串重复连接而成的字符串

x in s:如果x是s的子串,返回True,否则返回False

str[N:M]:切片, 返回子串

len()函数能返回-一个字符串的长度str1="hello,world"

len(str1)

大多数数据类型都可以通过str()函数转换为字符串:如str(123)

type()函数测试一个字符串的类型

字符串操作

操作含义+连接*重复< string >[ ]索引< string >[ : ]剪切len(< string >)长度< string >.upper()字符串中字母大写< string >.lower()字符串中字母小写< string >.strip()去两边空格及指定字符< string >.split()按指定字符分隔字符串为数组< string >.join()连接两个字符串序列< string >.find()搜索指定字符串< string >.replace()字符串替换for < var > in < string >字符串迭代

常用方法index(x)、rindex(x): 检测x是否包含在字符串中,返回相应的索引值,如果不存在。返回异常。

count(x):返回x在string里面出现的次数。

replace(str1,str2[,max]):把将字符串中的str1替换成str2,如果max指定,则替换不超过max次。

maketrans():创建字符映射的转换表。

translate(str):根据str给出的映射转换表转换string字符。

ljust(width[,fllchar]): 返回一个原字符串左对齐,并使用fillchar填充至长度width的新字符串,fillchar默认为空格。rjust()、center()类似。

split(str="",num=string.count(str)),其中num=string.count(str))以str为分隔符截取字符串,如果num有指定值,则仅截取num+1个子字符串。rsplit()类似,从右侧开始截取。

join(seq): 以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串。

startswith(substr)、endswith(substr):检查字符串是否是以指定子字符串substr开头或结束,是则返回True。

strip()、rstrip()、lstrip(): 截取字符串的指定字符。

字符串格式化

python字符串格式化符号:

符 号描述%c格式化字符及其ASCII码%s格式化字符串%d格式化整数%u格式化无符号整型%o格式化无符号八进制数%x格式化无符号十六进制数%X格式化无符号十六进制数(大写)%f格式化浮点数字,可指定小数点后的精度%e用科学计数法格式化浮点数%E作用同%e,用科学计数法格式化浮点数%g浮点型数据 会去掉多余的零 至多保留6位%G浮点型数据 会去掉多余的零 至多保留6位%p用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号描述*定义宽度或者小数点精度-用做左对齐+在正数前面显示加号( + )< sp >在正数前面显示空格#在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')0显示的数字前面填充'0'而不是默认的空格%'%%'输出一个单一的'%'(var)映射变量(字典参数)m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

应用编写程序,完成以下要求:

统计字符串中,各个字符的个数

比如:"hello world" 字符串统计的结果为: h:1 e:1 l:3 o:2 d:1 r:1 w:1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReentrantLock 分析

带着疑问去分析 ReentrantLock是如何实现锁管理的。ReentrantLock是如何实现重入的。ReentrantLock是如何实现公平锁与非公平锁。ReentantLock的公平锁为什么一般情况下性能都比公平锁查。ReentrantLock数据结构 ReentrantLock的底层是借助于AbstractQueuedSynchronizer实现的&…

v4l2 框架下如何设置分辨率_Linux下如何进行FTP设置

目录&#xff1a; 一、Redhat/CentOS安装vsftp软件二、Ubuntu/Debian安装vsftp软件一、Redhat/CentOS安装vsftp软件1.更新yum源yum update -y2.安装vsftpyum install vsftpd -y3.修改配置文件vi /etc/vsftpd/vsftpd.conf # 原有初始配置 local_umask022 dirmessage_enableYES x…

java ztree json_java递归实现ztree树结构数据展示

//获得zTree结构的数据(测试AuthInfo)RequestMapping("/getAuthInfoTree.action")public void getAuthInfoTree(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println("getAuthInfoTree")…

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结 【学习内容:第九章——虚拟存储器】 一、课本内容梳理 1.虚拟存储器 作用&#xff1a; 将主存看作是一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保护活动的区域&#xff0c;并根据需要在磁盘和…

vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩

TL;DR文章篇幅有点长 &#xff0c;可以先收藏再看 。要是想直接看看怎么写一个扩展&#xff0c;直接去第二部分 &#xff0c;或者直接去github看源码 。第一部分 --- Extension 知识点一、扩展的启动如何保证性能 --- 扩展激活&#xff08;Extension Activation&#xff09; 我…

Part5 数据的共享与保护 5.4类的友元5.5共享数据的保护

友元是C提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元&#xff0c;一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性&#xff0c;及数据封装与隐藏的原则&#xff0c;建议尽量不使用或少使用…

webp转换gif_用 WebP 创建尺寸更小、细节更丰富的图片,以此来提高网站的速度...

WebP 文件格式是一种基于 RIFF(资源互换文件格式)的文档格式。WebP 是 2010 年 Google 开发的一种图片格式&#xff0c;它为网页上的图片提供了卓越的无损和有损压缩。网站开发者们可以使用 WebP 来创建尺寸更小、细节更丰富的图片&#xff0c;以此来提高网站的速度。更快的加载…

myeclipse java注释模板_Eclipse/MyEclipse Java注释模板设置详解 ---转载自百度空间

设置注释模板的入口&#xff1a; Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍&#xff1a;文件(Files)注释标签&#xff1a;/*** Title: ${file_name}* Package ${package_name…

php之快速入门学习-9(switch)

PHP Switch 语句 switch 语句用于根据多个不同条件执行不同动作。 PHP Switch 语句 如果您希望有选择地执行若干代码块之一&#xff0c;请使用 switch 语句。 <?php switch (n) { case label1:如果 nlabel1&#xff0c;此处代码将执行;break; case label2:如果 nlabel2&…

python 如何判断excel单元格为空_如何用python处理excel(二)

读取excelimport xlrdworkbookxlrd.open_workbook(rC:\Users\Desktop\hebing\学生登记表.xls)sheetworkbook.sheet_by_index(0)#根据序列号来打开某一个sheetrowsheet.nrows#将excel的行数赋值给变量colsheet.ncols#将excel的列数赋值给变量print(sheet.cell_value(1,0))#打印出…

mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解

一、 数据查询语言(DQL)(重中之重)完整语法格式&#xff1a;select 表达式1|字段,....[from 表名 where 条件][group by 列名][having 条件][order by 列名 [asc|desc]][limit 位置,数量]<1> 普通查询select 查询表达式; // 最简单的sql语句&#xff0c;是一个函数select…

web前端到底是什么?有前途吗

web前端到底是什么&#xff1f; 某货&#xff1a; “前几年前端开发人员鱼目混杂&#xff0c;技术参差不齐&#xff0c;相对学习起来不规范&#xff0c;导致> 前端开发人员聚集&#xff0c;所以现在前端工种和工资还是没得到普遍重视&#xff0c;但近2年来&#xff0c;> …

此加载项为此计算机的所有用户安装_MDI Jade 6.5软件安装教程

软件下载▼关注微信公众号&#xff1a;贵州永航科技回复Jade即可获得软件安装包下载地址以及详细安装教程更多软件安装教程可点击菜单栏获取软件介绍MDI Jade是一款专门用于XRD分析的软件&#xff0c;XRD分析就是X射线衍射分析&#xff0c;MDI Jade通过对材料进行X射线衍射&…

java 线程定时器_Java线程之Timer定时器

定时/计划功能主要使用的就是Timer对象&#xff0c;它在内部还是使用多线程的方式进行处理&#xff0c;所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务&#xff0c;但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的时间晚于当前时间…

博客已经迁移到 http://imbotao.top 也会同步到这儿

完全是看到别人搭建的 hexo github Pages 博客界面很好看&#xff0c;很简洁&#xff0c;自己也喜欢折腾&#xff0c;就鼓捣了一个。 也在阿里云买了自己的域名&#xff0c;个人感觉在博客的样式和功能上花费了太多的时间&#xff0c;不过现在终于搞的差不多了&#xff0c;以后…

vscode 写vue 没有js提示_如何用VSCode实现一个vue.js项目?

1,新建项目打开Visual studio code打开一个你想要创建项目的文件夹打开集成终端&#xff1a;查看 –> 集成终端 或者直接按 ctrl\ 如果没有安装vue-cli&#xff0c;在终端输入&#xff1a;npm install \-g vue-cli全局安装vue-cli然后新建项目vue init webpack projectNamep…

python有没有类似unity3d_像web一样使用python

使用传统的web开发技术,也就是htmljs,然后搭配一个后端语言,已经成为当今web开发的固定模式了,为此也形成了众多的toolkit,譬如ror,django,各种js图形库更是玲琅满目,从非常大程度上也加速了开发过程.但传统web应用也非常自然地有一些诟病,有些特殊效果,c端能够轻而易举地完毕,…

邓白氏编码查询_外贸人常用查询工具汇总

外贸工具类网站FOB价格计算器http://bbs.fobshanghai.com/fobprice.htmCIF价格计算器http://www.easiertrade.com/public/cif.html?_1487894720000海关原产地证真伪查询https://dwz.cn/f3O8YGK6出口退税查询https://dwz.cn/kGWsBclu国家已正式于2018年11月1日起调整产品的出口…

超简单的走马灯效果

虽然走马灯的效果看起来很简单&#xff0c;网上也有很多的教程能够直接copy&#xff0c;然而还是第一次研究这个的实现方法。 先把div给定义出来&#xff0c;写好布局。 <div class"wrapper"><div id"box"><div>slide1</div><d…

winscp

简介&#xff1a;是linux的一个连接工具 1.winscp的下载&#xff1a;就会自动下载的了 2.安装配置&#xff1a; https://jingyan.baidu.com/article/6525d4b15bae6fac7d2e94a0.html 3.生成密钥&#xff1a; https://jingyan.baidu.com/article/ed2a5d1f377ccb09f6be178b.html 4…