Andru Asked:2020-03-04 16:09:25 +0000 UTC2020-03-04 16:09:25 +0000 UTC 2020-03-04 16:09:25 +0000 UTC dict.get 用于列表。有什么方法可以轻松地从 python 中的列表中获取值? 772 对于字典,有一个 get 方法不会抛出异常,并且可以让你在一行中写得很漂亮。列表有类似的方法吗? python-3.x 2 个回答 Voted Best Answer jfs 2020-03-04T17:56:57Z2020-03-04T17:56:57Z 要从Python中给定lst索引的列表中获取值:i value = lst[i] 如果索引可以超出列表。例如,如果命令行参数是可选的 ( Usage: program [<value>]) 并且在default未明确指定的情况下采用一个值: value = sys.argv[1] if len(sys.argv) > 1 else default 有时您可以使用异常。例如,如果命令需要一个整数作为命令行参数: try: n = int(sys.argv[1]) except (IndexError, ValueError): sys.exit(__doc__) IndexError处理根本没有给出参数的情况。ValueError表示传递了一个非整数。sys.exit(__doc__)如果未正确调用命令,则退出并打印文档字符串(Usage: program <n>包含)。 与列表等效的 dict get() 函数list.get拒绝了该添加,理由是它不够常见并隐藏了索引错误。就使用频率而言,这似乎不是真的,这至少可以从几个流行的 Stack Overflow 问题中得到证明(并且根据个人经验:我在我的代码中观察到IndexError 的变体和变体以及其他变体表达想法)。这些情况在定义辅助函数时并不常见,但如果您在代码中经常需要它,那么只需将 try/except 包装在一个函数中并调用.if len(sys.argv) > 1list.get()get(lst, i, default) 在不同的情况下,不同的方法可能更合适。例如,要获取列表中的第一个元素或None列表为空: value = next(iter(lst), None) 越界切片在 Python 中返回空列表:lst[i:i+1]. 为什么不发生错误时s[0:len(s)]? 我不喜欢这样的单行: value = next(iter(lst[i:i+1]), default) 或者 [value] = lst[i:i+1] or [default] YMMV。有关更多选项,请参阅如何获取 python 列表的第 n 个元素或默认值(如果不可用) 。 Vladislav Gladkikh 2020-03-04T16:43:37Z2020-03-04T16:43:37Z 在这里,在这个链接,人们说没有这样的方法,并举例说明如何自己编写这样的方法: def safe_list_get (l, idx, default): try: return l[idx] except IndexError: return default
要从Python中给定
lst索引的列表中获取值:i如果索引可以超出列表。例如,如果命令行参数是可选的 (
Usage: program [<value>]) 并且在default未明确指定的情况下采用一个值:有时您可以使用异常。例如,如果命令需要一个整数作为命令行参数:
IndexError处理根本没有给出参数的情况。ValueError表示传递了一个非整数。sys.exit(__doc__)如果未正确调用命令,则退出并打印文档字符串(Usage: program <n>包含)。与列表等效的 dict get() 函数
list.get拒绝了该添加,理由是它不够常见并隐藏了索引错误。就使用频率而言,这似乎不是真的,这至少可以从几个流行的 Stack Overflow 问题中得到证明(并且根据个人经验:我在我的代码中观察到IndexError 的变体和变体以及其他变体表达想法)。这些情况在定义辅助函数时并不常见,但如果您在代码中经常需要它,那么只需将 try/except 包装在一个函数中并调用.if len(sys.argv) > 1list.get()get(lst, i, default)在不同的情况下,不同的方法可能更合适。例如,要获取列表中的第一个元素或
None列表为空:越界切片在 Python 中返回空列表:
lst[i:i+1]. 为什么不发生错误时s[0:len(s)]?我不喜欢这样的单行:
或者
YMMV。有关更多选项,请参阅如何获取 python 列表的第 n 个元素或默认值(如果不可用) 。
在这里,在这个链接,人们说没有这样的方法,并举例说明如何自己编写这样的方法: