Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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 如何在for循环中从一个元素滚动到另一个元素?_Python_For Loop - Fatal编程技术网

Python 如何在for循环中从一个元素滚动到另一个元素?

Python 如何在for循环中从一个元素滚动到另一个元素?,python,for-loop,Python,For Loop,我想将sys.argv从第二个参数滚动到倒数第二个参数。为什么它不起作用 for arg in sys.argv[1: :len(sys.argv)-1] : print arg 您的代码中有一个错误:不应该放两个冒号,而应该只放一个。下面是它的工作原理: 为了排除nfirst元素,语法为[n:: 要排除n个最后一个元素,不需要计算数组中的元素数。而是使用:[:-n]语法 如果要排除第一个x元素和最后一个y元素,可以将这两个元素组合起来:[x:y] 在您的情况下,要获得没有第一

我想将sys.argv从第二个参数滚动到倒数第二个参数。为什么它不起作用

for arg in sys.argv[1: :len(sys.argv)-1] :
    print arg  

您的代码中有一个错误:不应该放两个冒号,而应该只放一个。下面是它的工作原理:

  • 为了排除nfirst元素,语法为
    [n::

  • 要排除n个最后一个元素,不需要计算数组中的元素数。而是使用:
    [:-n]
    语法

  • 如果要排除第一个x元素和最后一个y元素,可以将这两个元素组合起来:
    [x:y]

在您的情况下,要获得没有第一个和最后一个参数的数组,只需执行以下操作:

sys.argv[1:-1]
像这样:

for arg in sys.argv[1:-1]:
    print arg

sys.argv
是一个
列表
,因此您可以应用它以仅获取列表的某一部分,例如,如果您只想从元素2迭代到倒数第二个元素。 通常,如果
lst
是一个列表

lst[0]
是列表的第一个元素,并且

lst[-1]
这是最后一个。 例如:

使用切片,您的
for
循环应该如下所示

for arg in sys.argv[1:-1]:
    print(arg)

您的问题是冒号太多,导致出现错误

由于
[1::len(sys.argv)-1]
中有额外的冒号(在您的版本中,冒号之间的空格是不必要的,这可能会让您感到困惑),您的意思是:

  • 给我索引
    1
    中的所有元素
  • …到最后(因为第一个和第二个冒号之间没有任何内容)
  • len(sys.argv)-1的步幅
显然,如果你从一个序列的第二个元素开始,然后向前跨
len(sequence)-1
,你就到了终点,一无所有

如果删除额外的冒号,代码将正常工作

for arg in sys.argv[1:len(sys.argv)-1]:
    print arg  
。。。但是Python允许您从正在切片的序列的末尾开始计数,因此您可以使用以下内容替换整个序列:

for arg in sys.argv[1:-1]:
    print arg  

你把
放得太多了:
sys.argv[1:len(sys.argv)-1]
。此外,您还可以使用负索引:
sys.argv[1:-1]
。这个答案没有解决实际的错误,即切片中的额外冒号。@ZeroPiraeus:我认为这已经足够清楚了,因为我提供了正确的语法并解释了语法的工作原理。因为看起来不是,我编辑了我的答案,把实际的错误包含在OP的代码中。谢谢你。。。既然OP想知道“为什么它不起作用?”,我认为告诉他们很重要。。。不管怎样,downvote被upvote替换了:-)我认为这个解释是一个很好的例子,它可以分步骤慢慢地构建语法,然后(并且只有在那时)给出实际的代码修复。
for arg in sys.argv[1:-1]:
    print arg