尝试返回列表中的数字

2024-02-20

我对这里的代码有几个疑问。我想做的是编写一个函数,它接受 2 个输入、一个列表和一个选项,其中选项为 0 或 1,并返回列表中的数字列表。如果选项为 0,它将返回大于 5 或​​小于 -5 的数字。如果选项为 1,它将返回第一个列表中所有奇数的列表。这就是我现在的代码:

def splitList(myList, option):
    nList = []
    for element in range(0,len(myList)):
        if option == 0:
            if myList[element] > 5:
                nList.append(element)
    return nList

现在我让它返回一个列表,其中元素是否大于 5,但它返回它们在列表中的位置,而不是实际值。假设我运行了该程序

splitList([-6,4,7,8,3], 0)

它会返回 [2, 3]

我也希望它返回 7 和 8 以及 -6 的值,但我知道我现在没有正确的代码来返回 -6 。有人可以引导我朝正确的方向前进吗?另外,我想在这里使用 for 循环。另外,如果选项为 1,我不知道如何返回奇数。

这是我的有效代码:

def splitList(myList, option):
    nList = []
    for element in myList:
        if option == 0:
            if abs(element) > 5:
                nList.append(element)
        elif option == 1:
            if element % 2:
                nList.append(element)
    return nList

我怎样才能将其切换为 while 循环? 我尝试了以下代码,但它似乎不起作用:

def splitList2(myList, option):
    nList = []
    element = 0 
    while element < len(myList):
        if option == 0:
            if abs(element) > 5:
                nList.append(element)
        elif option == 1:
            if element % 2:
                nList.append(element)
        element = element + 1
    return nList

尽管命名你的变量element,它实际上是索引,而不是该索引处的元素。

你可以这么说,因为你必须使用myList[element]来比较它。

因此,要修复它,请再次执行相同的操作:

nList.append(myList[element])

然而,有一种更简单的方法可以做到这一点:直接循环遍历元素。

nList = []
for element in nList:
    if option == 0:
        if element > 5:
            nList.append(element)
return nList

你几乎never想要循环播放range(len(spam))。通常,您只需要元素,因此只需循环即可spam本身。有时你需要索引and元素,所以循环enumerate(spam)。如果您真的只需要索引......退一步并确保您确实需要(通常人们认为他们想要这个只是因为他们不知道zip,或者因为他们试图就地进行更改而不是复制,但这样做的方式行不通)。

或者,更简单地说:

if option != 0:
    return []
return [element for element in nList if element > 5]

同时:

我也希望它返回 7 和 8 以及 -6 的值,但我知道我现在没有正确的代码来返回 -6 。

你可以将英语直接翻译成Python:

它将返回大于 5 或​​小于 -5 的数字

… is:

… element > 5 or element < -5 …

然而,如果你理解的话,有一种更简单的写法:

… abs(element) > 5 …

所以,这使得选项 0 起作用。那么选项 1 呢?

判断一个数是否为奇数的一种简单方法是number % 2是非零的。

那么,让我们把它们放在一起:

if option == 0:
    return [element for element in nList if abs(element) > 5]
elif option == 1:
    return [element for element in nList if element % 2]
else:
    raise ValueError("I don't know option {}".format(option))

来自评论:

我如何将其更改为 while 循环?

要改变一个for循环进入while循环,你必须把它分成三个部分:初始化循环变量,写一个while测试,并更新体内的循环变量。一般的翻译是这样的:

for element in iterable:
    spam(element)

it = iterator(iterable)
while True:
    try:
        element = next(it)
    except StopIteration:
        break
    else:
        spam(element)

丑陋,不是吗?但通常情况下,您可以针对您的情况想出一些更简单的方法。例如,如果可迭代对象是一个序列,则列出一个list, 你可以这样做:

index, size = 0, len(sequence)
while index < size:
    spam(sequence[index])
    index += 1

仍然不如for循环,但不像通用的那么难看while.


最后,只是为了好玩。每个人都知道函数映射比elif链子,对吧?为了证明教条地遵循这样的规则的价值,让我们在这里这样做:

preds = {0: lambda x: abs(x) > 5,
         1: lambda x: x % 2}
def splitList(myList, option):
    return filter(preds[option], myList)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试返回列表中的数字 的相关文章

随机推荐

  • 如果设备重新启动,则启动 AlarmManager

    在我的应用程序中 我想每天在特定时间使用AlarmManager 在里面安卓文档 http developer android com reference android app AlarmManager html我找到了这个 注册的警报在
  • Java 将 JLabel 对齐在 JPanel 的中心

    我的应用程序顶部有一个栏 JLabel 两侧都有许多按钮 按钮的可见性取决于用户正在执行的当前任务 并且按钮的文本之一也可能根据当前状态而改变 我想做的是将许多按钮粘在 JPanel 的左侧 JLabel 的中心位于 JPanel 的正中心
  • NodeJS 的 Selenium Webdriver 的文档在哪里?

    我似乎没有找到任何一个 我总是找到的唯一一个是这个 https code google com p selenium wiki WebDriverJs https code google com p selenium wiki WebDri
  • 如何从一个模块向另一个模块发送消息?

    Angular有模块间通信的集成解决方案吗 如何将数据从一个模块发送到另一个模块 也许有一些事件循环 我将有一个您的两个通信模块所依赖的通用模块 公共模块将通过公开一个中介者模式来提供中介者模式的实现 service https docs
  • 我可以通过PHP语言控制硬件吗?

    我想知道是否可以使用PHP来控制与并行端口或USB端口连接的外部硬件 有什么想法或资源吗 对于 Linux 上的串行连接设备来说 这是一个有用的类 PHP串口 http www phpclasses org browse package 3
  • laravel uuid 未在查询中显示

    我有一个 postgres 数据库表 它使用 uuid 作为主键 通过webpatser laravel uuid包 以及 可读 的网络 ID 通过温克拉 哈希德 当我查询数据库时 如果我dd 响应中 我看到了完整的 UUID 但如果我只是
  • LiveCharts WPF 实时数据缓慢。提高 LiveCharts 实时绘图性能

    我正在研究在 WPF 应用程序中使用 LiveChart 来实时绘制温度测量结果 我整理了一个简单的折线图示例 以 10Hz 读取数据 并为每个样本重新绘制 然而 我发现重绘率约为 1Hz 对于 WPF 实时图表工具来说 这似乎非常慢 我的
  • 对 RichTextBox 字符串的不同部分着色

    我正在尝试对要附加到 RichTextBox 的字符串部分进行着色 我有一个由不同字符串构建的字符串 string temp DateTime Now ToShortTimeString userid message Environment
  • bootstrap datepicker、beforeShowDay 和禁用日期数组

    我正在尝试使用引导日期选择器插件 https github com eternicode bootstrap datepicker blob release docs index rst https github com eternicod
  • Xamarin:如何获取光标/触摸坐标(位置X和Y)?

    介绍 我正在创建我的第一个 Xamarin 应用程序 首先针对 UWP 然后是 Android 最后可能是 iOS 基本上 应用程序应该检测多个手指 并且圆圈会在每个手指上弹出并跟随它们 My app 首先 我认为 UI 和图形无法使用 X
  • 从 Heroku 上运行的 Celery 任务连接时出现 MySQL 查询错误

    在对外部 MySQL 数据库执行查询时 但仅在从 Heroku 上运行的 Celery 任务连接时 我看到错误的查询结果 同样的任务 在我自己的机器上运行时不会显示这些错误 并且错误只出现大约一半的时间 尽管当它们失败时 all任务是错误的
  • 欧拉计划:#8 [重复]

    这个问题在这里已经有答案了 当试图回答这个问题时 1000位数字中相邻的四个数字 最大乘积为 9 9 8 9 5832 73167176531330624919225119674426574742355349194934 969835203
  • 如何在 Doctrine 查询生成器中进行多个 WHERE IN 列查询?

    我想使用带有两列检查的 WHERE IN 语句更新数据库中的多条记录 纯 MySql 原始查询看起来像这样 并且它有效 UPDATE poll quota q SET q count q count 1 WHERE q form id 14
  • 使用 PHP 缩进 HTML(5) 时出现问题

    免责声明 请坦白这个问题的长度 这是我见过的现实世界问题中反复出现的问题 数百次都没有明确的 可行的解决方案 呈现 我有数百个 HTML 文件 我想使用 PHP 进行批量缩进 起初我想到使用 Tidy 但你应该知道 它默认与 HTML5 标
  • xCode 7:链接器命令失败,退出代码为 1(使用 -v 查看调用)

    当我在模拟器中运行我的应用程序时 一切正常 但是当我尝试在我的设备 iOS 8 4 上运行它时 我收到此错误 ld warning directory not found for option F Applications Xcode be
  • R闪亮:将文本显示为多行代码

    我想在我闪亮的应用程序上显示一些 R 代码 因此 我用了verbatimTextOutput但我找不到换行和显示代码段落的方法 这个解决方案 在 R Shiny 中使用 renderText 输出多行文本 https stackoverfl
  • Java中有通配符这样的东西吗?

    我正在运行一个比较程序 此时它会进行直接的 字符串到字符串 比较 如果它们完全匹配 则输出它们是匹配的 好吧 我希望添加一个允许 相似性 的附加功能 例如 String em1 52494646 String em2 52400646 if
  • 从 Azure SQL DW 中更新?

    我在尝试执行 UPDATE FROM 查询时在 Azure SQL DW 中收到错误 错误是 UPDATE 和 DELETE 语句中的 FROM 子句不能包含子查询源或联接 这只是 SQL DW 特有的吗 除此之外 我认为这个查询没有任何问
  • 局部变量类型推断未被识别

    我安装了 JDK 10 来尝试新功能 但我对此非常着迷var 由于某种原因 即使IntelliJ 版本2018 1 中添加了JDK 以下代码仍然无法编译 说Java找不到符号var public class Variations publi
  • 尝试返回列表中的数字

    我对这里的代码有几个疑问 我想做的是编写一个函数 它接受 2 个输入 一个列表和一个选项 其中选项为 0 或 1 并返回列表中的数字列表 如果选项为 0 它将返回大于 5 或 小于 5 的数字 如果选项为 1 它将返回第一个列表中所有奇数的