我发现这段代码完全可以实现我想要的功能,它将一个字符串拆分为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
答案 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()函数,但用冒号而不是逗号分隔。