Python的切片表示法是如何工作的?也就是说:当我编写[x:y:z]、a[:]、a]::2]等代码时,我如何理解哪些元素最终会出现在切片中?请在适当的地方附上参考资料。
另请参见:为什么切片和范围上限是互斥的?
Python的切片表示法是如何工作的?也就是说:当我编写[x:y:z]、a[:]、a]::2]等代码时,我如何理解哪些元素最终会出现在切片中?请在适当的地方附上参考资料。
另请参见:为什么切片和范围上限是互斥的?
当前回答
还可以使用切片分配从列表中删除一个或多个元素:
r = [1, 'blah', 9, 8, 2, 3, 4]
>>> r[1:4] = []
>>> r
[1, 2, 3, 4]
其他回答
这里有一个简单的记忆方法,可以记住它是如何工作的:
S L*I*C*E*切片的“i”位于第一位,代表包容,“e”排在最后,代表独占。
所以array[j:k]将包括第j个元素,并排除第k个元素。
这只是为了一些额外的信息。。。考虑以下列表
>>> l=[12,23,345,456,67,7,945,467]
反转列表的其他几个技巧:
>>> l[len(l):-len(l)-1:-1]
[467, 945, 7, 67, 456, 345, 23, 12]
>>> l[:-len(l)-1:-1]
[467, 945, 7, 67, 456, 345, 23, 12]
>>> l[len(l)::-1]
[467, 945, 7, 67, 456, 345, 23, 12]
>>> l[::-1]
[467, 945, 7, 67, 456, 345, 23, 12]
>>> l[-1:-len(l)-1:-1]
[467, 945, 7, 67, 456, 345, 23, 12]
我想加一个你好,世界!为初学者解释切片基础知识的示例。这对我帮助很大。
让我们列出六个值[“P”、“Y”、“T”、“H”、“O”、“N”]:
+---+---+---+---+---+---+
| P | Y | T | H | O | N |
+---+---+---+---+---+---+
0 1 2 3 4 5
现在,该列表中最简单的部分是其子列表。符号是[<index>:<index>],关键是这样读:
[ start cutting before this index : end cutting before this index ]
现在,如果你从上面的列表中选择一个片段[2:5],就会发生这种情况:
| |
+---+---|---+---+---|---+
| P | Y | T | H | O | N |
+---+---|---+---+---|---+
0 1 | 2 3 4 | 5
在索引为2的元素之前进行了一次切割,在索引为5的元素之前又进行了一个切割。因此,结果将是这两个剪辑之间的一个片段,一个列表['T','H','O']。
切片规则如下:
[lower bound : upper bound : step size]
I-将上限和下限转换为公共符号。
II-然后检查步长是正值还是负值。
(i) 如果步长为正值,则上限应大于下限,否则将打印空字符串。例如:
s="Welcome"
s1=s[0:3:1]
print(s1)
输出:
Wel
但是,如果我们运行以下代码:
s="Welcome"
s1=s[3:0:1]
print(s1)
它将返回一个空字符串。
(ii)如果步长为负值,则上限应小于下限,否则将打印空字符串。例如:
s="Welcome"
s1=s[3:0:-1]
print(s1)
输出:
cle
但如果我们运行以下代码:
s="Welcome"
s1=s[0:5:-1]
print(s1)
输出将为空字符串。
因此,在代码中:
str = 'abcd'
l = len(str)
str2 = str[l-1:0:-1] #str[3:0:-1]
print(str2)
str2 = str[l-1:-1:-1] #str[3:-1:-1]
print(str2)
在第一个str2=str[l-1:0:-1]中,上限小于下限,因此打印dcb。
然而,在str2=str[l-1:-1:-1]中,上限不小于下限(将下限转换为负值,即-1:因为最后一个元素的索引是-1和3)。
还可以使用切片分配从列表中删除一个或多个元素:
r = [1, 'blah', 9, 8, 2, 3, 4]
>>> r[1:4] = []
>>> r
[1, 2, 3, 4]