For循环,将字符串按n个字符分割

时间:2020-02-25 21:20:53

标签: python for-loop slice

我发现这段代码完全可以实现我想要的功能,它将一个字符串拆分为n个字符。但是有人可以在长格式的for循环中向我解释这段代码是什么样的吗?

n = 3
chunks = [str[i:i+n] for i in range(0, len(str), n)]
print(chunks)

我很难理解当前格式的代码的逻辑。如果我要重新编写它,它将看起来与下面的代码类似,但无法复制结果。

for i in range(0, len(str), n):
    chunks = ''
    string = str[i*n::n]
    chunks = chunks+string

Source of code

4 个答案:

答案 0 :(得分:3)

看起来像是列表理解

result = [value for element in iterable]

完全等同于以下代码:

result = []
for element in iterable:
    result.append(value)

因此,您的代码将很简单

chunks = []
for i in range(0, len(str), n):
    chunks.append(str[i:i+n])

答案 1 :(得分:2)

n = 3
inputString = "this is my string"
chunks = []
for i in range(0, len(inputString), n):
    myString = inputString[i:i+n]
    chunks.append(myString)
print(chunks)

块是一个数组!不是字符串。希望对您有所帮助!

答案 2 :(得分:1)

=(A3-A2)/0.25

答案 3 :(得分:1)

简单列表理解的结构如下:

result = [ <some calculation on variable(s)> for <variable(s)> in <iterator> ]

在for循环中,它转换为:

result = []
for <variable(s)> in <iterator>:
    result.append(<some calculation on variable(s)>)

在您的情况下,str[i:i+n]是对变量i的一些计算,i是对变量,而range(0, len(str), n)是对< em>迭代器

由迭代器range(0, len(str), n)产生的每个条目都放在变量i中,然后由str[i:i+n]处理为变量,作为结果列表的新项。

range()函数产生从起点0到(但不包括)终点len(str)跨步值n的值。

str右侧的[](em)(变量btw的名称非常错误,因为它是字符串类型的名称)会选择以相同方式定义的一系列字符至于range()函数,但用冒号而不是逗号分隔。