为了保持简短,我将排除整个代码,这更像是一个Python问题。让我们假装有 一个名为“plist”的列表。这份名单风靡了N...
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() 作为最大值...??
另外,我知道你可以使用切片,但是涉及一些逻辑数学,因为长度可以是奇数,甚至是偶数,而且啊……我的大脑受伤了。
输出示例:
>>> 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]
更新
啊哈!好吧,所以我想如果我打破列表,它会更多列表...durppp 我可以放弃它...快速谷歌搜索...所以我得到了这个..
chunks = [plist[x:x+4] for x in range(0, len(plist))]
然后,通过使用 block 的长度,我可以迭代该数字作为范围,,,
for i in range(0, len(chunks)):
print(chunks[i])
BOOM...还有更好的方法吗?
最佳答案
这绝对不是你想要的!
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
大小的 block ,对吗?
所以这意味着当我们的大小为 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
哇,我们得到了 block 的总数,即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
现在这就是你想要的。希望这能让你明白。
关于python - 将列表的输出格式化为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44752682/