Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中对齐标准输出_Python - Fatal编程技术网

在python中对齐标准输出

在python中对齐标准输出,python,Python,我有下面的程序,它使用了我从网上复制的数据 from collections import Counter,deque import re import time import my_ds num = 100000 def append(c): for i in range(num): c.append(i) def appendleft(c): if isinstance(c, deque): for i in range(num):

我有下面的程序,它使用了我从网上复制的数据

from collections import Counter,deque
import re
import time
import my_ds

num = 100000

def append(c):
    for i in range(num):
        c.append(i)

def appendleft(c):
    if isinstance(c, deque):
        for i in range(num):
            c.appendleft(i)
    else:
        for i in range(num):
            c.insert(0,i)

def pop(c):
    for i in range(num):
        c.pop()

def popleft(c):
    if isinstance(c,deque):
        for i in range(num):
            c.popleft()
    else:
        for i in range(num):
            c.pop(0)


for container in [deque, list]:
    for operation in [append, appendleft, pop, popleft]:
        c = container(range(num))
        start = time.time()
        operation(c)
        elapsed = time.time() - start
        print('Completed {0}/{1}       in {2} seconds: {3} ops/sec'.format(container.__name__,operation.__name__, elapsed, num/elapsed))
输出如下所示

Completed deque/append       in 0.011004447937011719 seconds: 9087234.595718866 ops/sec
Completed deque/appendleft       in 0.00800323486328125 seconds: 12494947.56911344 ops/sec
Completed deque/pop       in 0.00800323486328125 seconds: 12494947.56911344 ops/sec
Completed deque/popleft       in 0.009003400802612305 seconds: 11106914.175250906 ops/sec
Completed list/append       in 0.011004447937011719 seconds: 9087234.595718866 ops/sec
Completed list/appendleft       in 8.727489709854126 seconds: 11458.048456601553 ops/sec
Completed list/pop       in 0.01900768280029297 seconds: 5261030.555416185 ops/sec
Completed list/popleft       in 1.781712532043457 seconds: 56125.776858800775 ops/sec

我正在寻找一种很好的方法来对齐数字
seconds
ops/second
。这在python中是如何做到的您可以使用format()string方法的对齐运算符。请查看此处的文档:

例如:

>>> a='deque'
>>> b='append'
>>> c=0.000102301230102
>>> d=0.1242344213
>>> print('Completed {0}/{1}       in {2:<15} seconds: {3:<15} ops/sec'.format(a, b, c, d))
Completed deque/append       in 0.000102301230102 seconds: 0.1242344213    ops/sec
>a='deque'
>>>b='append'
>>>c=0.000102301230102
>>>d=0.1242344213

>>>在{2:中打印('Completed{0}/{1})。您可以使用format()字符串方法的对齐运算符。请查看以下文档:

例如:

>>> a='deque'
>>> b='append'
>>> c=0.000102301230102
>>> d=0.1242344213
>>> print('Completed {0}/{1}       in {2:<15} seconds: {3:<15} ops/sec'.format(a, b, c, d))
Completed deque/append       in 0.000102301230102 seconds: 0.1242344213    ops/sec
>a='deque'
>>>b='append'
>>>c=0.000102301230102
>>>d=0.1242344213

>>>在{2:中打印('Completed{0}/{1}),您还需要对齐
Completed deque/append
part,以便对齐其余列。请尝试以下操作:

print('Completed {0}/{1:<11} in {2:<20} seconds: {3:<18} ops/sec'.format(container.__name__,operation.__name__, elapsed, num/elapsed))

Completed deque/append      in 0.009192228317260742 seconds: 10878755.025288548 ops/sec
Completed deque/appendleft  in 0.008057117462158203 seconds: 12411386.636681067 ops/sec
Completed deque/pop         in 0.009001970291137695 seconds: 11108679.18531663  ops/sec
Completed deque/popleft     in 0.008355855941772461 seconds: 11967654.863469055 ops/sec
Completed  list/append      in 0.009819984436035156 seconds: 10183315.528794795 ops/sec
Completed  list/appendleft  in 5.856244802474976    seconds: 17075.78890106128  ops/sec
Completed  list/pop         in 0.012813091278076172 seconds: 7804517.8817312345 ops/sec
Completed  list/popleft     in 1.437035083770752    seconds: 69587.72345181856  ops/sec

print('Completed{0}/{1:您需要对齐
Completed deque/append
部分,以便对齐其余列。请尝试以下操作:

print('Completed {0}/{1:<11} in {2:<20} seconds: {3:<18} ops/sec'.format(container.__name__,operation.__name__, elapsed, num/elapsed))

Completed deque/append      in 0.009192228317260742 seconds: 10878755.025288548 ops/sec
Completed deque/appendleft  in 0.008057117462158203 seconds: 12411386.636681067 ops/sec
Completed deque/pop         in 0.009001970291137695 seconds: 11108679.18531663  ops/sec
Completed deque/popleft     in 0.008355855941772461 seconds: 11967654.863469055 ops/sec
Completed  list/append      in 0.009819984436035156 seconds: 10183315.528794795 ops/sec
Completed  list/appendleft  in 5.856244802474976    seconds: 17075.78890106128  ops/sec
Completed  list/pop         in 0.012813091278076172 seconds: 7804517.8817312345 ops/sec
Completed  list/popleft     in 1.437035083770752    seconds: 69587.72345181856  ops/sec

print('Completed{0}/{1:如果你需要在更多的地方使用它,而不仅仅是在这个地方,你也可以使用这个模块,它可以很好地为你格式化,并且不需要预先猜测长度。

如果你需要在更多的地方使用它,你也可以使用这个模块,它可以很好地为你格式化,并且不需要预先猜测长度

你可以使用格式规范。基本上它就像str.format一样。例如,你可以使用

a = 2
f'length:{a:<5}cm'
但关键是,您可以像这样通过编程方式设置对齐长度

a = 2
f'length:{a:<{a+3}}cm'
f-string在Python3.6中是新的,我正在使用Python3.7.1

您可以与format spec一起使用。基本上它与str.format一样。例如,您可以使用

a = 2
f'length:{a:<5}cm'
但关键是,您可以像这样通过编程方式设置对齐长度

a = 2
f'length:{a:<{a+3}}cm'
f-string在Python3.6中是新的,我正在使用Python3.7.1


我尝试了这种方法。但是我得到了一个错误-'Type error:'float'对象不可iterable。@liv2hak您必须发布您正在使用的实际代码。谢谢:)请看我尝试了这种方法。但是我得到了一个错误-'Type error:'float'对象不可iterable。@liv2hak您必须发布您正在使用的实际代码。谢谢:)请看