为了保持这个简短,Ill删除整个代码,这更像是一个pythonic问题。让我们假装theres 一个名为“plist”的列表。这份名单风靡一时......
print(plist[0:4])
print(plist[4:8])
print(plist[8:12])
print(plist[12:16])
print(plist[16:20])
print(plist[20:24])
...
我试图做的是模仿这种行为,基本上将我的列表打印成4列......简单到了吗?
另外,它是一个直接列表,没有嵌套 使用len()我们可以得到用于范围的数字我刚试图弄清楚如何使用一个循环来使用len()作为最大值... ??
另外,我知道你可以使用切片但是有一些逻辑数学,因为长度可以是od或者甚至是bahhhh ....我的大脑受伤了。
输出示例:
>>> plist
[178433, 207110, 204805, 140038, 177544, 179979, 166668, 177602, 140559, 170642, 208019, 150809, 161434, 177565, 134814, 175221, 172577, 204708, 177573, 146604, 177694, 180041, 156088, 180064, 172478, 177599, 172608, 141761, 156226, 171718, 170056, 141513, 208082, 162509, 171726, 132431, 204753, 178386, 179923, 178390, 171864, 204772, 207049, 134368, 148961, 169828, 131301, 171754, 144107, 206308, 178415, 151920, 206323, 207988, 134334, 141431, 206328, 176508]
和期望的输出
forExmple()
[178433, 207110, 204805, 140038]
[177544, 179979, 166668, 177602]
[140559, 170642, 208019, 150809]
[161434, 177565, 134814, 175221]
[172577, 204708, 177573, 146604]
[177694, 180041, 156088, 180064]
AHA!好吧所以我想如果我打破列表它更多列表... durppp我可以查看它...快速谷歌搜索....所以我得到了这个..
chunks = [plist[x:x+4] for x in range(0, len(plist))]
然后,通过使用长度的chunck我可以迭代这个数字作为范围,,,
for i in range(0, len(chunks)):
print(chunks[i])
BOOM ......还有更好的方法吗?
答案 0 :(得分:2)
肯定是不你想要的东西!
chunks = [plist[x:x+4] for x in range(0, len(plist))]
print(chunks)
期望的输出:
[178433, 207110, 204805, 140038]
[177544, 179979, 166668, 177602]
.... and so on
你的输出:
[178433, 207110, 204805, 140038],
[207110, 204805, 140038, 177544],
[204805, 140038, 177544, 179979],
...
你看到了区别吗?
你想把它们分成4个子列表,即plist[0:4],plist[4:8]..
等等,因为你需要一点点数学。别担心,我会向你解释一下!。
看看这段代码!。
a=[178433, 207110, 204805, 140038, 177544, 179979, 166668, 177602, 140559, 170642, 208019, 150809, 161434, 177565, 134814, 175221, 172577, 204708, 177573, 146604, 177694, 180041, 156088, 180064, 172478, 177599, 172608, 141761, 156226, 171718, 170056, 141513, 208082, 162509, 171726, 132431, 204753, 178386, 179923, 178390, 171864, 204772, 207049, 134368, 148961, 169828, 131301, 171754, 144107, 206308, 178415, 151920, 206323, 207988, 134334, 141431, 206328, 176508]
my_len = len(a)
my_len = (my_len-my_len%4)+4
my_range = my_len//4
print(my_range)
fin_list = [a[i*4:i*4+4] for i in range(my_range)]
for item in fin_list:
print(item)
输出:
15
[178433, 207110, 204805, 140038]
[177544, 179979, 166668, 177602]
[140559, 170642, 208019, 150809]
[161434, 177565, 134814, 175221]
[172577, 204708, 177573, 146604]
[177694, 180041, 156088, 180064]
[172478, 177599, 172608, 141761]
[156226, 171718, 170056, 141513]
[208082, 162509, 171726, 132431]
[204753, 178386, 179923, 178390]
[171864, 204772, 207049, 134368]
[148961, 169828, 131301, 171754]
[144107, 206308, 178415, 151920]
[206323, 207988, 134334, 141431]
[206328, 176508]
最需要以下几行!
my_len = len(a)
my_len = (my_len-my_len%4)+4
my_range = my_len//4
首先my_len
将具有列表的长度,此处为58
。
下一行(my_len-my_len%4)+4
你可能会问它。我们需要范围,我们可以轻松地将其分成大小 4
的块吗?
所以这意味着当我们的大小为58
时,我们会得到
14
四个大小的子列表和 1
两个大小的列表。
[178433, 207110, 204805, 140038] --> size 4
[177544, 179979, 166668, 177602] --> size 4
.
.
.
[206328, 176508] ---> And finally size 2
为什么在最后一个中大小为2因为我们的列表大小是58?那么我们可以将第一个 56 元素拆分为 4 项目,确切地将剩余的元素拆分为? ---->的 2 强>
那么我们有多少个子列表呢?的 15 即可。怎么做到的?
检查出来
>>> my_len= 58
>>> my_len
58
>>> my_len%4
2
所以%只给出余数。所以我们剩下的就是 2 。
>>> my_len
58
>>> my_len%4
2
>>> my_len - my_len%4
56
>>> my_range = (my_len - my_len%4)+4
60
>> my_range//4
15
哇,我们得到了块的总数,即 15 。这正是我在这几行代码中所做的
my_len = len(a)
my_len = (my_len-my_len%4)+4
my_range = my_len//4
所以range(my_range)
只是意味着从0
到14
的迭代
注意:范围(值) - >将是0,1,2,......,value-1
现在看看这个列表理解,
[a[i*4:i*4+4] for i in range(my_range)]
为什么i*4:i*4+4
??因为如果我只是保留i:i+4
(以下面的列表为例)就会发生这种情况
For i=0
[1,2,3,4,5,6,7,8,9,10,11,12]
<------->
i:i+4 --> 0:4
For i=1
[1,2,3,4,5,6,7,8,9,10,11,12]
<----->
i:i+4 --> 1:5
你看到了什么问题?但是[i*4:i*4+4]
For i=0
[1,2,3,4,5,6,7,8,9,10,11,12]
<------->
i*4:i*4+4 --> 0:4
For i=1
[1,2,3,4,5,6,7,8,9,10,11,12]
<----->
i*4:i*4+4 --> 4:(4+4) --> 4:8
现在这就是你想要的。希望这能让你感到高兴。