假设我有一个变量 S
和 string "1:3"
(或者就此而言,"1"
,或 "1:"
或 ":3"
),我想将其用作 list L
。您不能简单地执行 L[S]
,因为切片所需的参数是 "int:int"
。
现在,我现在有一些丑陋的代码,将 S
解析为它的两个组成部分 int
并处理所有边缘情况(其中 4 个)以得出正确的切片访问,但这非常丑陋且不符合 Python 标准。
我如何优雅地获取字符串 S
并将其用作我的切片说明符?
最佳答案
这可以通过使用列表理解来完成,而无需太多黑客攻击。我们在 :
上拆分字符串,将拆分的项目作为参数传递给 slice()
内置函数。这使我们能够在一行中以一种适用于我能想到的每种情况的方式很好地生成切片:
slice(*[int(i.strip()) if i else None for i in string_slice.split(":")])
通过使用内置的 slice()
,我们巧妙地避免了必须自己处理太多边缘情况。
示例用法:
>>> some_list = [1, 2, 3]
>>> string_slice = ":2"
>>> some_list[slice(*[int(i.strip()) if i else None for i in string_slice.split(":")])]
[1, 2]
>>> string_slice = "::-1"
>>> some_list[slice(*[int(i.strip()) if i else None for i in string_slice.split(":")])]
[3, 2, 1]
关于Python:想要使用字符串作为切片说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324554/