我有一个N长度的数字字符串或数字。然后我把它变成一个列表来迭代数字。我想将列表切成5个数字块,看起来像这样:
N = '1234567890'
slice1 = '12345'
slice2 = '23456'
slice3 = '34567'
依旧......
我无法找到python的代码示例,特别是切片和for循环。任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
您可以创建使用列表理解的列表。
docker-compose
答案 1 :(得分:0)
就这样做
n = '1234567890'
for i in range(len(n)):
print(n[i:i+5])
这应该可以解决问题。但我需要说的是,很难相信你实际上是在搜索互联网,因为这是一个经常被问到的问题......
<强>更新强>
如果您想使用不同的切片,可以试试这个:
n = '1234567890'
ar= [None]*len(n)
for i in range(len(n)):
if len(n[i:i+5]) == 5:
ar[i] = n[i:i+5]
else:
del ar[i:-1]
del ar[-1]
break
for i in ar:
print(i)
所以这里发生的是:
答案 2 :(得分:0)
首先,您需要了解N =&#39; 1234567890&#39;中的每个元素。被编入索引。如果您想访问"1"
,可以使用N[0]
。 "2"
N[1]
N[9]
。依此类推"0"
,等于slice1 = '12345'
slice2 = '23456'
slice3 = '34567'
。
你的目标是创造像
这样的东西slice1
让我们看一下N
这两个值,以及如何通过'1' '2' '3' '4' '5'
N[0] N[1] N[2] N[3] N[4]
l
现在我们转向列表切片。给出一个列表start
。可以通过指定end
和l[start:end]
来选择其中的一部分,其中包括l[start:end]
这两个版本。
请注意,l[start], l[start+1], ..., l[end-1]
会选择元素
l[end]
是。未选中slice1
。选择将包括起始索引但排除结束索引。
返回'12345'
示例,您如何选择N[0:5]
?从上面的讨论中,我们知道我们需要从0到4的indeces。因此,我们需要放置N[5]
因为如上所述,slice1
不会以这种方式包含。
根据这种做法,您现在可以编写for循环以连续产生slice2
,slice3
和gap = 5
slices = []
for i in range(3):
slices[i] = N[i:i+gap]
# slices will be ["12345", "23456", "34567"]
# or
slice1 = N[0:5]
slice2 = N[1:6]
slice3 = N[2:7]
。
我们可以像
那样做gap
我们通过定义变量i
来做到这一点。起始索引和结束索引之间始终存在5的差距,因为我们想要的切片长度为5.还有一些观察:如果起始索引是i + gap
,那么结束索引应该是{{1 }}。我们一次增加一个以获得新的切片。
请注意,我只介绍了一种方法来执行列表切片,以满足您在此示例中的特定需求。您可以在此问题Understanding Python's slice notation
中找到更多用法答案 3 :(得分:0)
您也可以尝试事先将N
转换为列表,并在每次迭代时弹出第一个字符,直到列表长度小于5
。然后你可以在每次迭代时取前五个字符。
以下是使用collections.deque
的示例:
from collections import deque
from itertools import islice
N = '1234567890'
items = deque(N)
size = 5
result = []
while len(items) >= size:
result.append("".join(islice(items, 0, size)))
items.popleft()
print(result)
哪个输出:
['12345', '23456', '34567', '45678', '56789', '67890']
注意: itertools.islice
用于切片deque
对象。您也可以使用list(items)[:5]
,但每次都会创建一个额外的列表副本。
答案 4 :(得分:0)
使用dict comprehension
:
N = '1234567890'
slices = {'slice'+str(i+1): N[i:i+5] for i in range(len(N)-4)}
用法:
slice1 = slices['slice1']
slice2 = slices['slice2']
slice3 = slices['slice3']
依旧......
答案 5 :(得分:0)
就这么简单: -
from collections import deque
N = '1234567890'
m = deque(N)
for i in range(len(m)-4):
print N[i:i+5]
#output as you expected