列表与字典—>一维列表

news2024/12/22 23:55:04

这一期内容可以结合着与第一期一起看https://guidm.blog.csdn.net/article/details/130900129?spm=1001.2014.3001.5502
在这里插入图片描述

让我们来先做个题目:

1、输入一个整数n,要求输出[1,n]范围内的所有完数。

完数是一个正整数,该数恰好等于其所有不同真因子之和。

a = [6, 28, 496, 8128] 
try:
    while True:
        cnt = 0
        n = int(input())
        print(n, end=':')
        for i in a:
            if i <= n:
                cnt += 1
                print('',i,end='' )
            else:
                break
        if cnt == 0:
            print('NULL')
        else:
            print()
except EOFError:
    pass

一维列表

1、基本概念

一维列表的定义:列表名 = [列表值表]

列表名应是合法的用户标识符,列表值表可以为空,也可以有一个或多个元素,各个元素之间用逗号隔开。可以通过下标访问列表中的各个元素,下表从0开始。

一些列表的用法:

a = []
b = [1]
c = [1, 2, 3, 4, 5]
d = [0]*5 复制五个0创建列表
e = [1, 2, 3] + [4, 5, 6]#用+ 合并两个列表成为一个新的列表

可以用内置函数list( )创建空列表,列表的长度可以用内置函数len( )求得。

内置函数sorted(可迭代对象,key,reverse)

排序的时候按照关键字key对应函数的返回值进行排序,key的默认值为None,表示升序排序;逆序标记reverse默认为False,表示不进行逆序处理,若指定reverse为True,则将对排序结果逆序处理。

sorted()与列表名.sort不同之处在于前者不会改变列表,后者会改变列表。

2、一维列表的应用

2.1 逆序输出

输出若干个整数,然后按输入的相反顺序显示这些数据。

方案一:第一个数据除外,输出每个数据之前,先输出一个空格。

方案二:最后一个数据除外,输出每个数据之后,再输出一个空格。

#方案一:
a = list(map(int, input().split()))
n = len(a)
for i in range(n-1, -1, -1):
    if i != n-1:
        print('', end = ' ')
    print(a[i], end='')
print()

#方案二:
a = list(map(int, input().split()))
n = len(a)
cnt = 0
for i in range(n-1, -1, -1):
   cnt += 1
   if cnt > 1:
        print('', end='')
   print(a[i], end='')
print()

实际上,可以直接使用reverse进行逆置列表,如果要求数据之前间隔一个空格,则可以直接在这些可迭代对象之前加一个*,作为内置函数print()的参数数据进行输出。

a = list(map(int, input().split()))
a.reverse()
print(*a)

把*a作为print()函数的参数实际上是吧列表a中的各个元素逐个取出作为print()函数的参数。

2.2数位分离

输入一个整数n,要求输出其位数,并分别以正序和逆序输出各位数字。每两个数据之间用一个逗号分隔。

n = int(input())
a = [0]*10
i = 0
while n > 0:
    a[i] = n % 10
    n = n // 10
    i += 1
print(i, end='')
for j in range(i-1, -1, -1):
    print(',', a[j], sep='', end='')
for j in range(i):
    print(',', end='')
    print(a[j], end='')
print()

解读:把n中的各个数位上的数字分离出来,可以不断使用取余运算符%取得个位并存放在列表中,并用n=n//10去掉个位,直到n为0为止。

2.3约瑟夫环

有n个人围成一圈,从第1号开始进行1、2、3报数,凡报3者就退出,下一个又从1开始报数……知道最后只剩下一个人时为止。输入整数n,请问最后剩下者原来的位置是多少号。

n = int(input())
a = [True]*n   #定义长度为n的逻辑型列表,所有元素为True
j = -1         #下标变量j赋初值
cnt = 0        #报数计数器赋初值
m = n          #剩余人数计数器赋初值
while m>1:
    j = (j+1)%n
    if a[j] == False:
        continue
    cnt += 1
    if cnt %3 == 0:
        a[j] = False
        m -= 1
for i in range(n):
    if a[i] == True:
        print(i + 1)
        break

解读:开始时把一个逻辑型列表的所有元素的值都设为True表示相应的人在圈中,当剩余人数多余1人时,用下标j逐个扫描列表元素,检查当前下表对应的人是否已出圈,若已出圈则跳过,否则计数器cnt增加一,若计数器是三的倍数,则相应的人出圈,设为False。

2.4循环移位

在一行上先输入两位数n和m再接着输入n个整数构成一个数列,要求把前m个数循环移位到数列的右边。

a = list(map(int, input().split()))
n = a[0]
m = a[1]
a = a[2:]
for i in range(m):
    x = a[0]
    for j in range(1,n):
        a[j-1] = a[j]
    a[n-1] = x
print(*a)
2.5 小者靠前

第一行输入整数n,第二行输入n个整数到一个列表中,使得其中最小的一个数成为列表的第一个元素(首元素)。若有多个最小数,则首元素仅与最早出现的最小的数交换。

n = int(input())
a = list(map(int, input().split()))
k = 0
for i in range(1, n):
    if a[i]<a[k]:
        k = i
a[0],a[k] = a[k],a[0]
print(*a)
2.6 选择排序

第一行输入数据个数n,第二行输入n个整数构成整数数列,要求对该整数进行排序,使其升序排列。

n = int(input())
a = list(map(int, input().split()))
for i in range(0, n-1):
    k = i
    for j in range(i+1, n):
        if a[k] > a[j]:
            k = j
    if k!=i:
        a[i], a[k] = a[k], a[i]
print(*a)

对于n个数升序排列,共进行n-1趟排序,每一趟从待排序的数列中选出最小的一个数,通过交换操作放到当前的最前位置。

2.7冒泡排序

第一行输入数据个数n,第二行输入n个整数构成整数序列,要求对该整数进行排序,使其升序排列。、

n = int(input())
a = list(map(int, input().split()))
for i in range(0, n-1):
    for j in range(n-1-i):
        if a[j]>a[j+1]:
            a[j],a[j+1] = a[j+1],a[j]
print(*a)

对n个数升序排列,共进行n-1趟排序,每一趟依次比较相邻的两个数,若位置逆序则交换,将小者放在前面,大者而放在后面,每一趟排序结束时,把当前的最大数放到当前的最后位置。

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

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

相关文章

计算机组成原理笔记概览

Chapter 1 计算机概要与技术Chapter 2 指令:计算机的语言Chapter 3 算术运算Chapter 4 处理器Chapter 5 大容量和高速度:开发存储器层次结构适配教材:《计算机组成与设计 硬件/软件接口 原书第5版》 要学计算机组成原理,你得知道它是干什么的,抓住总线:如何改进计算机的…

nacos入门-纯springboot整合nacos(百分之百可以-参考官网,比官网还全)

我是一个大数据工程师&#xff0c;但是被迫营业做后端&#xff0c;现在接手了一个项目&#xff0c;干&#xff01;有个东西叫Nacos。没接触过&#xff0c;那不行&#xff0c;会被优化的。我一大数据工程师搞gr的springcloud&#xff0c;网上很多说整合整合springboot的&#xf…

Python+Django生活用品商城网站前后端

程序示例精选 PythonDjango生活用品商城网站前后端 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonDjango生活用品商城网站前后端 >>编写代码&#xff0c;代码整洁&am…

Java多线程wait notify和park unpark的使用

目录 一、wait & notify的使用1、API介绍2、demo2、多线程模式3、wait和notify的原理 二、Park & Unpark的使用1、基本使用2、特点3、park和unpark的原理 一、wait & notify的使用 1、API介绍 obj.wait() 让进入 object 监视器的线程到 waitSet 等待 obj.wait(n)…

508教室使用方法

一、教室平面图 508教室的布局如下&#xff0c;重要的设备已经在图中标出。总开关、一体机和机柜。   二、使用方法 2.1 房间机器上电 进门后首先走到“总开关位置”&#xff0c;将电匝闭合。 原来的开关如图所示&#xff0c;有3组开关&#xff0c;1号组开关用于控制插座、…

商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型

AGI时代的到来&#xff0c;市场风云变幻&#xff0c;世界正在经历着一场技术革命的颠覆性洗礼。 2023年6月6日6时&#xff0c;数说故事正式对外发布数说故事“SocialGPT”&#xff0c;国内首个专注Social领域的商业大模型。数说故事“SocialGPT”大家昵称它为“社牛”大模型&a…

chatgpt赋能python:Python如何保存为py文件

Python如何保存为py文件 如果你是一个Python初学者或者在使用Python进行编程&#xff0c;你可能会想知道如何将Python代码保存为.py文件。本文将向您介绍Python如何保存为py文件&#xff0c;这样你就可以像其他编程语言一样&#xff0c;通过编辑器来直接修改和运行代码了。 保…

spring实例化bean之实例化

1.关键方法createBean doGetBean中调用getSingleton方法中调用singletonFactory.getObject()触发lambda表达式中的createBean方法 AbstractAutowireCapableBeanFactory#createBean protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable Object[] …

安装和使用MySQL

文章目录 零、学习目标一、获取MySQL安装程序二、安装MySQL数据库管理系统三、启动并使用MySQL命令行&#xff08;一&#xff09;启动MySQL命令行&#xff08;二&#xff09;在MySQL命令行里操作数据库1、显示数据库2、使用数据库3、查看数据库里的表4、查看表的记录 零、学习目…

还在用InputStream的available()方法获取流的字节数吗?那你可要小心了!

问题说明 因为项目需求&#xff0c;需要从一个url获取文件流然后保存到minio文件服务器中。 先看看下面的代码片段 MinioClient minioClient MinioClient.builder().endpoint(new URL("http://ip:port")).credentials("username", "password"…

关于npm install md5报错the command again as root/Administrator的解决办法

nodejs安装依赖报错 (venv) PS D:\pythonProject> npm install md5 npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! requiredBy: . npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! Its possible that the file was…

QQ群内增加ChatGPT机器人

0. 起因 最近弄了一个QQ群&#xff0c;人在逐渐增多&#xff0c;问问题的人也越来越多&#xff0c;有些问题是编程基础问题&#xff0c;2023年了&#xff0c;这些问题都不应该由人类来解决了&#xff0c;交给AI吧。所以&#xff0c;想在QQ群里加个ChatGPT机器人&#xff0c;应…

simplify3d 打印参数设置笔记

专业实用且详细的打印教程 3D打印故障排除&#xff1a;所有问题和解决方案 simplify3d 切片软件使用 初始设置 材料&#xff1a;PLA 喷头温度 215 热床温度 60 导入的模型格式 stl 保存的模型名称可以是中文 但是名称中不允许有空格&#xff0c;否则我这个打印机加热好喷头和…

GORM---初级查询

文章目录 初始数据表一般查询Where条件普通SQL查询查询 Struct & Map Not 条件Or 条件内联条件额外查询选项FirstOrInitAttrsAssign FirstOrCreateAttrsAssign 初始数据表 一般查询 var p1, p2, p3, p4 connect.PersonInfo var ps []connect.PersonInfo// 把主键升序&…

2023年陕西彬州第八届半程马拉松赛153pb完赛

1、赛事背景 2023年6月3日&#xff0c;我参加了2023陕西彬州第八届半程马拉松赛&#xff0c;最终153完赛&#xff0c;PB了5分钟。起跑时间早上7点30分&#xff0c;毕竟6月天气也开始热了。天气预报显示当天还是小到中雨&#xff0c;上次铜川宜君半马也是雨天跑的&#xff0c;阴…

为何选择C语言作为大一编程入门?

C语言&#xff0c;编程之本&#xff0c;源于生命。作为一门最接近底层的高级语言&#xff0c;学习C语言有以下重要原因&#xff1a; 探索底层&#xff1a;C语言为我们提供了理解计算机底层工作原理的机会。通过学习C语言&#xff0c;我们能更容易理解内存管理、指针操作等底层知…

前后端分离项目SpringBoot-Shiro-jwt处理401响应码的方案

问题现象&#xff1a; 现在大多数项目已经实现前后端分离&#xff0c;当采用shiro作为安全框架时&#xff0c;如果请求的token已过期或未认证请求&#xff0c;会得到401的HTTP STATUS。此时在前端还会因为401的错误弹出一个登录认证的弹框。效果如下&#xff1a; 经分析&#…

DataLeap的全链路智能监控报警实践(一):常见问题

随着字节跳动业务的快速发展&#xff0c;大数据开发场景下需要运维管理的任务越来越多&#xff0c;然而普通的监控系统只支持配置相应任务的监控规则&#xff0c;已经不能完全满足当前需求&#xff0c;在日常运维中开发者经常会面临以下几个问题&#xff1a; 任务多&#xff0c…

凝聚全球顶尖力量,助力开源行业发展 | 2023开放原子全球开源峰会开幕式暨高峰论坛亮点抢先看!

亮点攻略 一触即发 6月11-13日&#xff5c;中国北京 作为开源领域一年一度的盛事&#xff0c;由2023全球数字经济大会组委会主办&#xff0c;开放原子开源基金会、北京市经济和信息化局、北京经济技术开发区管理委员会承办的2023开放原子全球开源峰会将于6月11日至13日在北京…

实现Mac使用空格键预览更多文件格式

mac上的快速预览非常好用&#xff0c;但是对于许多格式的不支持造成了体验感的割裂。例如对于使用频繁的.md、.js、.py等格式的文件&#xff0c;无法生成缩略图。可以通过在「Quick Look」中 安装插件的方式来实现预览格式的扩展。 1. 插件的安装 下载的插件一般有两种格式&am…