列表介绍,循环遍历,相关操作,嵌套_PG_peng丶的博客-程序员秘密

技术标签: python基础  列表介绍,循环遍历,相关操作,嵌套  

列表介绍
想一想:

前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢?

定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?

答:

列表

<1>列表的格式
变量A的类型为列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

比C语言的数组强大的地方在于列表中的元素可以是不同类型的

testList = [1, 'a']

<2>打印列表
demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print(namesList[0])
print(namesList[1])
print(namesList[2])

结果:

xiaoWang
xiaoZhang
xiaoHua

列表的循环遍历

  1. 使用for循环
    为了更有效率的输出列表的每个数据,可以使用循环来完成

demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
for name in namesList:
    print(name)

结果:

xiaoWang
xiaoZhang
xiaoHua
  1. 使用while循环
    为了更有效率的输出列表的每个数据,可以使用循环来完成

demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

length = len(namesList)

i = 0

while i<length:
    print(namesList[i])
    i+=1

结果:

xiaoWang
xiaoZhang
xiaoHua

列表的相关操作
列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”"

<1>添加元素("增"append, extend, insert)
append
通过append可以向列表添加元素

demo:

#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']

print("-----添加之前,列表A的数据-----")
for tempName in A:
    print(tempName)

#提示、并添加元素
temp = input('请输入要添加的学生姓名:')
A.append(temp)

print("-----添加之后,列表A的数据-----")
for tempName in A:
    print(tempName)

结果:
在这里插入图片描述

extend
通过extend可以将另一个集合中的元素逐一添加到列表中

a = [1, 2]
b = [3, 4]
a.append(b)
a
[1, 2, [3, 4]]

a.extend(b)
a
[1, 2, [3, 4], 3, 4]
insert
insert(index, object) 在指定位置index前插入元素object

a = [0, 1, 2]
a.insert(1, 3)
a
[0, 3, 1, 2]
<2>修改元素(“改”)
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

demo:

#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']

print("-----修改之前,列表A的数据-----")
for tempName in A:
    print(tempName)

#修改元素
A[1] = 'xiaoLu'

print("-----修改之后,列表A的数据-----")
for tempName in A:
    print(tempName)

结果:

-----修改之前,列表A的数据-----
xiaoWang
xiaoZhang
xiaoHua
-----修改之后,列表A的数据-----
xiaoWang
xiaoLu
xiaoHua

<3>查找元素("查"in, not in, index, count)
所谓的查找,就是看看指定的元素是否存在

in, not in
python中查找的常用方法为:

in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
demo

#待查找的列表
nameList = ['xiaoWang','xiaoZhang','xiaoHua']

#获取用户要查找的名字
findName = input('请输入要查找的姓名:')

#查找是否存在
if findName in nameList:
    print('在字典中找到了相同的名字')
else:
    print('没有找到')

结果1:(找到)
在这里插入图片描述

结果2:(没有找到)
在这里插入图片描述

说明:

in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

index, count
index和count与字符串中的用法相同

a = [‘a’, ‘b’, ‘c’, ‘a’, ‘b’]
a.index(‘a’, 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
File “”, line 1, in
ValueError: ‘a’ is not in list

a.index(‘a’, 1, 4)
3

a.count(‘b’)
2

a.count(‘d’)
0
<4>删除元素("删"del, pop, remove)
类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。

列表元素的常用删除方法有:

del:根据下标进行删除
pop:删除最后一个元素
remove:根据元素的值进行删除
demo:(del)

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

del movieName[2]

print('------删除之后------')
for tempName in movieName:
    print(tempName)

结果:

------删除之前------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
------删除之后------
加勒比海盗
骇客帝国
指环王
霍比特人
速度与激情

demo:(pop)

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

movieName.pop()

print('------删除之后------')
for tempName in movieName:
    print(tempName)

结果:

------删除之前------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
------删除之后------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人

demo:(remove)

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

movieName.remove('指环王')

print('------删除之后------')
for tempName in movieName:
    print(tempName)

结果:

------删除之前------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
------删除之后------
加勒比海盗
骇客帝国
第一滴血
霍比特人
速度与激情

<5>排序(sort, reverse)
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

reverse方法是将list逆置。

a = [1, 4, 2, 3]
a
[1, 4, 2, 3]

a.reverse()
a
[3, 2, 4, 1]

a.sort()
a
[1, 2, 3, 4]

a.sort(reverse=True)
a
[4, 3, 2, 1]

列表的嵌套

  1. 列表嵌套
    类似while循环的嵌套,列表也是支持嵌套的

一个列表中的元素又是一个列表,那么这就是列表的嵌套

schoolNames = [['北京大学','清华大学'],
                ['南开大学','天津大学','天津师范大学'],
                ['山东大学','中国海洋大学']]
  1. 应用
    一个学校,有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)
运行结果如下:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pg_peng/article/details/84198177

智能推荐

numpy生成随机数random的使用_achieve_success的博客-程序员秘密

无约束条件生成随机数组random.random()用于生成一个0-1的随机浮点数(1) random()格式:np.random.random(n)说明:生成一个数组,元素值域[0,1),其中n表示个数import numpy as npr1 = np.random.random(10)print(r1)[ 0.60254432 0.83757376 0.76985246 0...

P1307 数字反转 AC于2017.10.16_流年成沙的AC梦的博客-程序员秘密

原题noip2011普及组第一题题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入输出格式输入格式:一个整数 NN输出格式:一个整数,表示反转后的新数。输入输出样例输入样例#1: 123输出样例#1:321输入样例#2:...

五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer)_amork的博客-程序员秘密

一、 开放性 1. SQL Server 只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有

配置和调试EIGRP_weixin_33775582的博客-程序员秘密

【实验目的】:在本次实验中,你将安装增强的内部网关路由协议(EIGRP)和观察它的缺省行为。然后优化EIGRP配置。在完成本次实验之后,你需要完成下列任务:核心和其他机架使用EIGRP路由协议理解EIGRP的查询数据包。配置EIGRP路由汇总。发布EIGRP缺省路由。配置EIGRP存根特性去限制EIGRP查询范围。【实验拓扑】:...

MOOC python语言程序设计 嵩天老师 笔记(第三周)_BIAUTUMN的博客-程序员秘密

第三周pow(x, 0.5)能够计算x的平方根,计算负数的平方根将产生:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬A. 复数B. 程序崩溃C. 无输出D. V

随便推点

Skynet服务器框架(九) snax框架_adolph_yang的博客-程序员秘密

什么是 snax由于 skynet 的 API 还是比较偏底层,为简化服务的编写提供一套简单的 API ,便有了这套 snax 框架,解决的问题:“编写一个 skynet 内部服务,处理发送给它的消息。snax 并不会取代 skynet 原有的 api ,只是方便实现这类简单需求而已。”—— 云风换句话说,snax 就是对 skynet API 的部分封

flex布局_all_imagination的博客-程序员秘密

文章目录flex布局是什么?属性介绍flex-directionflex布局是什么?Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。行内元素也可以使用Flex布局。/*块级元素*/.header{ display: flex;}/*行内元素*/.header{ display:...

PAT甲级真题详解优化_pat甲级解析_高冷小伙的博客-程序员秘密

1003-Emergency题目链接https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376解题思路典型的Dijkstra模板题。总结对于一些经典算法,尝试去多理解,多模拟过程;只去背模板的话,很容易忘或者说出现一些细节错误!代码展示#include&lt;bits/stdc++.h&gt;using namespace std;const int inf=0x3f3f3f3f;/*D

士兵杀敌三_afvdxhq267883的博客-程序员秘密

士兵杀敌(三)时间限制:2000ms | 内存限制:65535KB难度:5描述南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。所以,南将军经常问军师小工第i号士兵到第j号士兵...

JS中的运算符优先级_ahb1507的博客-程序员秘密

1(),.圆括号,点运算2!,++,——,-+非,自加,自减,3*,/,%乘,除,取余4+,-加,减5&gt;,&lt;,&gt;=,&lt;=大于,小于,大于等于,小于等于6==,===,!=,!==值相等,类型相等,值不等,类型不等,7&am...

推荐文章

热门文章

相关标签