python - 将列表的输出格式化为列

标签 python python-3.x

为了保持简短,我将排除整个代码,这更像是一个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/

相关文章:

python - Webdriver + PhantomJS 只是卡在那里

即使我使用了 global 关键字,Python 也无法读取函数中的全局变量

python - 如何在 python 中访问这些 json 对象

python - 如何使用 lambda 打印字符串列表?

python - 如何使用 python 在discord.py 上制作排行榜命令?

python-3.x - 在Windows7上构建tensorflow

python - Azure Databricks - 将 Parquet 文件读取到 DataFrame 中

python - 在 django 模板中使用 python 字符串格式

python - 是否有 `pathos` 特定的方法来确定 CPU 核心数?

python-3.x - 从顺序 API 模型转换为函数式 API 模型