Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从范围中省略一个值_Python_Range_Idioms - Fatal编程技术网

Python 从范围中省略一个值

Python 从范围中省略一个值,python,range,idioms,Python,Range,Idioms,Python中编写忽略一个值的范围(生成器或列表)的最简洁方法是什么。因此,给定整数n和k以及0≤k到目前为止,我找到的最短解决方案是 [i for i in range(n) if i != k] 但也许还有更简短的。这里的一个问题是,在Python2中,变量i流入周围的范围,这在某些情况下可能会很烦人。由于列表从0到n运行,我们知道对于列表ns中的所有值n,ns.index(n)=n。(ns[0]==0,ns[1]==1,依此类推。) 考虑到这一点,您可以通过以下方式分割列表: ns =

Python中编写忽略一个值的范围(生成器或列表)的最简洁方法是什么。因此,给定整数
n
k
以及
0
k
到目前为止,我找到的最短解决方案是

[i for i in range(n) if i != k]

但也许还有更简短的。这里的一个问题是,在Python2中,变量
i
流入周围的范围,这在某些情况下可能会很烦人。

由于列表从0到n运行,我们知道对于列表
ns
中的所有值
n
ns.index(n)=n
。(
ns[0]==0
ns[1]==1
,依此类推。)

考虑到这一点,您可以通过以下方式分割列表:

ns = range(n)
ms = ns[:k] + ns[k+1:]

可以说更短,但也可以说不那么清晰,所以由你决定

略短于列表理解解决方案:

sorted(set(range(n))-{k})

。。。但在我看来,可能没有那么快,也不容易理解。

如果您希望结果再次成为生成器:

filter(k.__ne__, range(n))

(一个字符比另一个字符长,但可能内存效率更高,性能也可能更好。此外,IMHO是一个更适合当前任务的语义。另一方面,访问低级ish
。\uu ne\uuuu
可能会违反“稍微可读”的目标,具体取决于受众。)

“可能有一些更短的内容。”是的,如果i!=k,则有[code>[i代表范围(n)内的i];-)有什么原因让你需要用Python写这篇文章的最短方法吗?@ZeroPiraeus:只是好奇而已。因此,不要认为这是一个严格的最佳意义上的代码高尔夫球;它必须保持实用性、可读性和适合日常使用。