Python 如何在for循环中从一个元素滚动到另一个元素?
我想将sys.argv从第二个参数滚动到倒数第二个参数。为什么它不起作用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] 在您的情况下,要获得没有第一
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