python格式化输出,以及列表创建的注意事项
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() 输出保持一致。