python格式化输出,以及列表创建的注意事项

南笙酒味 提交于 2020-02-08 04:05:33

for循环创建列表

lists=[[0] for i in range(4)]
lists[0].append('1')
lists
[[0, '1'], [0], [0], [0]]

[ 含 i 表达式 for i in range(n) ]
表示重复创建 n 个 含i 表达式元素 ,也可以不含i 的常数表达式

lists=[[0]] *4
lists[0].append('1')
lists
[[0, '1'], [0, '1'], [0, '1'], [0, '1']]

列表做乘法表示 对象的引用,当改变其中的一个的时候
其他的相同引用也会发生变化

格式化字符串

format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill            ::=  <any character>
align           ::=  "<" | ">" | "=" | "^"
sign            ::=  "+" | "-" | " "
width           ::=  digit+
grouping_option ::=  "_" | ","
precision       ::=  digit+
type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]

{ 变量位置[数组下标,或者 字典关键字 ] : 可选参数必须按照固定顺序填入 1 填充字符 2 对齐方式 3正负号 4 长度 5 精度 6 类型 }

左右对齐
str1=[‘左对齐’,‘居中’ ,‘右对齐’]
print(’{0[0]:><10}’.format(str1))
print(’{0[1]:<^10}’.format(str1))
print(’{0[2]:<>10}’.format(str1))
左对齐>>>>>>>
<<<<居中<<<<
<<<<<<<右对齐

a=10.2123
print(‘科学计数法小写e{:>+15.3e}’.format(a))
print(‘科学计数法大写E{:>+15.3E}’.format(a))
科学计数法小写e +1.021e+01
科学计数法大写E +1.021E+01

b=123
print(’{:>+15b}’.format(b)) # b 代表二进制
print(’{:>+15d}’.format(b)) # d 代表十进制
print(’{:>+15f}’.format(b)) # f 代表浮点数
+1111011
+123
+123.000000

format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill ::=
align ::= “<” | “>” | “=” | “^”
sign ::= “+” | “-” | " "
width ::= digit+
grouping_option ::= “_” | “,”
precision ::= digit+
type ::= “b” | “c” | “d” | “e” | “E” | “f” | “F” | “g” | “G” | “n” | “o” | “s” | “x” | “X” | “%”
如果指定了一个有效的 align 值,则可以在该值前面加一个 fill 字符,它可以为任意字符,如果省略则默认为空格符。 在 格式化字符串字面值 或在使用 str.format() 方法时是无法使用花括号字面值 ("{" or “}”) 作为 fill 字符的。 但是,通过嵌套替换字段插入花括号则是可以的。 这个限制不会影响 format() 函数。

各种对齐选项的含义如下:

选项

意义

‘<’

强制字段在可用空间内左对齐(这是大多数对象的默认值)。

‘>’

强制字段在可用空间内右对齐(这是数字的默认值)。

‘=’

强制将填充放置在符号(如果有)之后但在数字之前。这用于以“+000000120”形式打印字段。此对齐选项仅对数字类型有效。当’0’紧接在字段宽度之前时,它成为默认值。

‘^’

强制字段在可用空间内居中。

请注意,除非定义了最小字段宽度,否则字段宽度将始终与填充它的数据大小相同,因此在这种情况下,对齐选项没有意义。

sign 选项仅对数字类型有效,可以是以下之一:

选项

意义

‘+’

表示标志应该用于正数和负数。

‘-’

表示标志应仅用于负数(这是默认行为)。

space

表示应在正数上使用前导空格,在负数上使用减号。

‘#’ 选项可以让“替代形式”被用于转换。 替代形式可针对不同类型分别定义。 此选项仅对整数、浮点、复数和 Decimal 类型有效。 对于整数类型,当使用二进制、八进制或十六进制输出时,此选项会为输出值添加相应的 ‘0b’, ‘0o’ 或 ‘0x’ 前缀。 对于浮点数、复数和 Decimal 类型,替代形式会使得转换结果总是包含小数点符号,即使其不带小数。 通常只有在带有小数的情况下,此类转换的结果中才会出现小数点符号。 此外,对于 ‘g’ 和 ‘G’ 转换,末尾的零不会从结果中被移除。

‘,’ 选项表示使用逗号作为千位分隔符。 对于感应区域设置的分隔符,请改用 ‘n’ 整数表示类型。

在 3.1 版更改: 添加了 ‘,’ 选项 (另请参阅 PEP 378)。

‘_’ 选项表示对浮点表示类型和整数表示类型 ‘d’ 使用下划线作为千位分隔符。 对于整数表示类型 ‘b’, ‘o’, ‘x’ 和 ‘X’,将为每 4 个数位插入一个下划线。 对于其他表示类型指定此选项则将导致错误。

在 3.6 版更改: 添加了 ‘_’ 选项 (另请参阅 PEP 515)。

width 是一个定义最小字段宽度的十进制整数。 如果未指定,则字段宽度将由内容确定。

当未显式给出对齐方式时,在 width 字段前加一个零 (‘0’) 字段将为数字类型启用感知正负号的零填充。 这相当于设置 fill 字符为 ‘0’ 且 alignment 类型为 ‘=’。

precision 是一个十进制数字,表示对于以 ‘f’ and ‘F’ 格式化的浮点数值要在小数点后显示多少个数位,或者对于以 ‘g’ 或 ‘G’ 格式化的浮点数值要在小数点前后共显示多少个数位。 对于非数字类型,该字段表示最大字段大小 —— 换句话说就是要使用多少个来自字段内容的字符。 对于整数值则不允许使用 precision。

最后,type 确定了数据应如何呈现。

可用的字符串表示类型是:

类型

意义

‘s’

字符串格式。这是字符串的默认类型,可以省略。

None

和 ‘s’ 一样。

可用的整数表示类型是:

类型

意义

‘b’

二进制格式。 输出以 2 为基数的数字。

‘c’

字符。在打印之前将整数转换为相应的unicode字符。

‘d’

十进制整数。 输出以 10 为基数的数字。

‘o’

八进制格式。 输出以 8 为基数的数字。

‘x’

十六进制格式。 输出以 16 为基数的数字,使用小写字母表示 9 以上的数码。

‘X’

十六进制格式。 输出以 16 为基数的数字,使用大写字母表示 9 以上的数码。

‘n’

数字。 这与 ‘d’ 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。

None

和 ‘d’ 相同。

在上述的表示类型之外,整数还可以通过下列的浮点表示类型来格式化 (除了 ‘n’ 和 None)。 当这样做时,会在格式化之前使用 float() 将整数转换为浮点数。

浮点数和小数值可用的表示类型有:

类型

意义

‘e’

指数表示。 以使用字母 ‘e’ 来标示指数的科学计数法打印数字。 默认的精度为 6。

‘E’

指数表示。 与 ‘e’ 相似,不同之处在于它使用大写字母 ‘E’ 作为分隔字符。

‘f’

定点表示。 将数字显示为一个定点数。 默认的精确度为 6。

‘F’

定点表示。 与 ‘f’ 相似,但会将 nan 转为 NAN 并将 inf 转为 INF。

‘g’

常规格式。 对于给定的精度 p >= 1,这会将数值舍入到 p 位有效数字,再将结果以定点格式或科学计数法进行格式化,具体取决于其值的大小。

准确的规则如下:假设使用表示类型 ‘e’ 和精度 p-1 进行格式化的结果具有指数值 exp。 那么如果 m <= exp < p,其中 m 以 -4 表示浮点值而以 -6 表示 Decimal 值,该数字将使用类型 ‘f’ 和精度 p-1-exp 进行格式化。 否则的话,该数字将使用表示类型 ‘e’ 和精度 p-1 进行格式化。 在两种情况下,都会从有效数字中移除无意义的末尾零,如果小数点之后没有余下数字则小数点也会被移除,除非使用了 ‘#’ 选项。

正负无穷,正负零和 nan 会分别被格式化为 inf, -inf, 0, -0 和 nan,无论精度如何设定。

精度 0 会被视为等同于精度 1。 默认精度为 6。

‘G’

常规格式。 类似于 ‘g’,不同之处在于当数值非常大时会切换为 ‘E’。 无穷与 NaN 也会表示为大写形式。

‘n’

数字。 这与 ‘g’ 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。

‘%’

百分比。 将数字乘以 100 并显示为定点 (‘f’) 格式,后面带一个百分号。

None

类似于 ‘g’,不同之处在于当使用定点表示法时,小数点后将至少显示一位。 默认精度与表示给定值所需的精度一样。 整体效果为与其他格式修饰符所调整的 str() 输出保持一致。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!