在python中的特定位置分割字符串

时间:2020-07-04 08:31:25

标签: python string list

所以可以说我有一个特殊的字符串,例如:string =“ abcdef”

我想按每两个字符分割的地方,这样就结束了:[“ ab”,“ cd”,“ ef”]

好吧,我设法解决了这个问题,但是通过在线搜索最终解决了:

[s [i:i + 2] for i in range(0,len(s),2)]使用返回语句

但是我不满意,因为我不太清楚这行,s [i:i + 2]的工作原理以及该范围为何具有第三个属性2。

如果有人可以指出并分享文档链接以阅读它,那将是很好的。

谢谢。

3 个答案:

答案 0 :(得分:1)

在python中,列表上存在“切片”,该切片用来调用:

在列表中,如果要选择第三个元素,可以使用:list[:3]

在这里,您可以使用对字符串变量的切片来通过理解来构建字符串列表。这是正确的,并遵循“良好做法”

按理解列出:

numbers = [1, 2, 3, 4]
squares = [n**2 for n in numbers]
print(squares) 
# Output: [1, 4, 9, 16]

Slicing

答案 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”]的方式。

希望这个答案对您有帮助。 如有任何疑问,可以回信。