所以可以说我有一个特殊的字符串,例如:string =“ abcdef”
我想按每两个字符分割的地方,这样就结束了:[“ ab”,“ cd”,“ ef”]
好吧,我设法解决了这个问题,但是通过在线搜索最终解决了:
[s [i:i + 2] for i in range(0,len(s),2)]使用返回语句
但是我不满意,因为我不太清楚这行,s [i:i + 2]的工作原理以及该范围为何具有第三个属性2。
如果有人可以指出并分享文档链接以阅读它,那将是很好的。
谢谢。
答案 0 :(得分:1)
在python中,列表上存在“切片”,该切片用来调用:
在列表中,如果要选择第三个元素,可以使用:list[:3]
在这里,您可以使用对字符串变量的切片来通过理解来构建字符串列表。这是正确的,并遵循“良好做法”
按理解列出:
numbers = [1, 2, 3, 4]
squares = [n**2 for n in numbers]
print(squares)
# Output: [1, 4, 9, 16]
答案 1 :(得分:0)
语法s[x:y]
表示s的内容,从索引x到y-1。因此,我们只说一个序列:
s="abcdef"
s[0:2]
的值将返回索引0和1的s
,即“ ab”。
而范围内的第三个参数是用于说明范围内元素的跳跃。例:
range(0,5,2)
将返回[0,2,4]
有关更多信息,您可以检查: https://docs.python.org/3/library/functions.html#func-range
答案 2 :(得分:0)
让我们首先从range
range
总共需要3个参数,其中1个参数是必需的。
range(start, stop[, step])
所有参数都应为either built-in int or any object that implements the __index__ special method
。
stop
参数是该范围起作用的必需参数。
每当您输入range(10)
或任何数字而不是10
时,都在指定stop
参数。
如果省略step
参数,则默认为1
。如果省略start
参数,则默认为0
。如果step
为零,则引发ValueError
。
对于正步,范围r的内容由
公式r[i] = start + step*i where i >= 0 and r[i] < stop.
对于否定步骤,仍将确定范围的内容
通过公式r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.
以下是range
的一些示例:
>>> list(range(0, -10, -1)) # negative step
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0, -10, -2))
[0, -2, -4, -6, -8]
这里0
是开始,-10
是结束,-1
是步进参数。
>>> list(range(0, 30, 5)) # positive step
[0, 5, 10, 15, 20, 25]
您可以从Python Doc
了解更多有关范围的信息 现在让我们谈谈s[i:i+2]
。
当[]
将此语法与python中的序列对象一起使用时,就像您使用s[i:i+2]
时一样,则称为切片或索引。
有六种序列类型:字符串,字节序列(字节对象),字节数组(字节数组对象),列表,元组和范围对象。
在您的情况下,您正在切片。
切片可访问指定范围的序列元素。
语法
sequence [start:stop[:step]]
start - Optional. Starting index of the slice. Defaults to 0.
stop - Optional. The last index of the slice or the number of items to get. Defaults to len(sequence).
step - Optional. Extended slice syntax. Step value of the slice. Defaults to 1.
s[i] - return i‘th item of s, origin 0
s[i:j] - return slice of s from i to j
s[i:j:k] - return slice of s from i to j with step k
现在让我们举个例子:
string = "abcdef"
string[1]
Out[3]: 'b'
string[2:5]
Out[4]: 'cde'
string[-5:-2]
Out[5]: 'bcd'
string[1:4]
Out[6]: 'bcd'
string[-5:-2] == string[1:4]
Out[7]: True
在您的代码中,当您执行range(0, len(s), 2)
时,它将生成值0, 2, 4
,并且对于您正在执行的每个此值,s[i:i+2]
s[0:2]
Out[11]: 'ab'
s[2:4]
Out[12]: 'cd'
s[4:6]
Out[13]: 'ef'
这就是您获得[“ ab”,“ cd”,“ ef”]的方式。
希望这个答案对您有帮助。 如有任何疑问,可以回信。