首页 > 编程问答 >使用列表理解迭代列表

使用列表理解迭代列表

时间:2024-08-01 15:50:33浏览次数:12  
标签:python list iteration list-comprehension

我正在从头开始练习Python。我的代码中有两个问题。

代码是将列表中的所有数字相乘。

代码:

str1=input("Enter your little string: ")
list1=str1.split()
print(list1)
int_list=[int(list1[int(x)]) for x in range(0, len(list1)) if str.isdigit(list1[int(x)])]
x=1
int_list=[(x:=x*n) for n in int_list]
print(int_list)
print (x)

对于列表 ['1', '2', 'Hello', '3' , '4'] 输出为:

Enter your little string: 1 2 Hello 3 4
['1', '2', 'Hello', '3', '4']
[1, 2, 6, 24]
24

问题 1:请注意,在代码的第 4 行中,我从 range(0, len(list1)) 进行迭代,而不是 ( range(0, len(list1)-1) 因为没有 -1,x 的输出是正确的;并且有 - 1 它以某种方式不计算列表的最后一个元素。为什么会这样?

问题 2:你看,我正在使用列表理解来创建一个新列表(我根本不想要或不使用它)。虽然我打印“x”作为我想要的输出,但我可以做类似的事情而不创建不必要的列表并将值直接存储在“x”中吗?:D(idk,我是Python新手)才过了3天)


你做得很好,能够识别代码中的冗余并寻求改进,这是非常棒的!以下是你的问题的答案以及如何优化代码的方法:

问题 1: range(0, len(list1)) 是正确的。在 Python 中, range(start, stop, step) 会生成从 start (包含)到 stop (不包含)的一系列数字。因此, range(0, len(list1)) 会生成从 0 到 len(list1)-1 的数字,这正是你迭代列表所有元素所需的范围。如果你使用 range(0, len(list1)-1) ,你实际上会跳过列表的最后一个元素。

问题 2: 是的,你绝对可以不用创建不必要的列表来实现你的目标!你可以直接在一个循环中计算数字的乘积,并将结果存储在 x 中。

以下是你的代码的优化版本:

str1 = input("Enter your little string: ")
list1 = str1.split()
print(list1)

x = 1
for item in list1:
  if item.isdigit():
    x *= int(item)

print(x) 

在这个版本中:

  1. 我们遍历了分割后的输入字符串 list1 中的每个项目。
  2. 对于每个项目,我们使用 .isdigit() 方法检查它是否是数字。
  3. 如果它是数字,我们将其转换为整数并乘以 x ,有效地累积了乘积。

此方法避免了创建不必要的列表,并使代码更易读和高效。

标签:python,list,iteration,list-comprehension
From: 78819689

相关文章

  • 用于从连接到 LAN 交换机的四个 Arduino 扩展板读取/保存数据的 Python 代码
    我有四个Arduino扩展板连接到LAN交换机。每个人都会发出一条“HelloJane”消息。LAN交换机已连接到我的PC。我需要将每个Arduino的数据/消息保存在PC上的单独文件夹中。请帮助使用Python脚本/代码。我能够看到来自所有四个Arduino的消息,但无法将它们保存到文......
  • 使用 Python 生产者和消费者在 Kubernetes minikube 上设置 Kafka Kraft
    我正在尝试从kubernetes集群外部连接到kubernetesminikubekafkapod。服务器启动没有任何问题,但我无法设法将本地kafka生产者/消费者连接到外部kafkapod。在集群内的kafka服务器映像上,我将bootstrap-server设置为:bin/kafka-topics.sh--create--bootst......
  • pandas 数据帧索引:to_list() 与 tolist()
    我最近为某人编写了一个python脚本,其中我使用to_list()将pandas数据帧的索引转换为列表。然而,这对他们不起作用,因为他们得到:AttributeError:'Index'objecthasnoattribute'to_list'使用他们的Python解释器。我做了一些搜索,发现还有tolist()......
  • python llama_index.indices.list.retrievers 导入错误
    fromllama_indeximportGPTListIndexfromllama_index.indices.list.retrieversimportListIndexLLMRetrieverdocuments=SimpleDirectoryReader('./data').load_data()index=GPTListIndex.from_documents(documents,service_context=service_context)r......
  • 如何使用 python 和 bs4 修复抓取 web 表输出 csv
    请帮帮我,,我想在“td”、“Barcode”和“namaproduk”中获取2个数据,但我得到的数据非常糟糕。我应该修复什么?importcsvimportrequestsfrombs4importBeautifulSoupoutfile=open("dataaa.csv","w",newline='')writer=csv.writer(outfile)page=0whilepag......
  • 基于Django的超市小程序+47822(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小
    基于django超市小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,超市小程序被用户普遍使用,为方便用户能够可以随时进行超市小程序的数据信息管理,特开发了基于djan......
  • 【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管
    随着信息技术的迅猛发展,传统的医院挂号管理方式面临着效率低下、排队时间长、信息不对称等诸多问题。这些问题不仅影响患者的就医体验,也加重了医院工作人员的负担。在此背景下,基于Python的医院挂号管理系统应运而生。该系统旨在通过信息化手段优化挂号流程,提高管理效率,提升医疗......
  • Python-PLAXIS自动化建模技术与典型岩土工程
    原文链接:Python-PLAXIS自动化建模技术与典型岩土工程https://blog.csdn.net/2301_78164062/article/details/140607885?spm=1001.2014.3001.5501一:Plaxis软件及PlaxisPythonAPI环境搭建1、Plaxis2D\Plaxis3D软件2、面向对象编程语言Python及其开发环境Spyder3、Plaxis输......
  • 在Conda环境中安装python内核
    我刚刚开始使用jupyter笔记本进行我的开发过程。我首先创建一个新的python环境:$condacreate-ntestenv然后激活它:$sourceactivatetestenv并安装python内核模块:$pipinstallipykernel现在,模糊性开始了。我只想专门为我的活动环境创建一个新内核。......
  • C++11 中的 python 海象运算符 (:=) 等效吗?
    最近我在Python中经常使用:=运算符,这样:ifmy_object:=SomeClass.function_that_returns_object():#dosomethingwiththisobjectifitexistsprint(my_object.some_attribute)问题有没有办法在c++11中做到这一点而不使用stdlib?例如......