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

简介: 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))

左对齐>>>>>>>

<<<<居中<<<<

<<<<<<<右对齐

20200208165420261.png

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
a='nihao'
for i in range(len(a)):
    print(a[i].__hash__())
4083222512905356788
3155938417007823428
-6530341932251293458
-3126526882218892406
6140503684127694359
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() 输出保持一致。


相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
275 1
|
3月前
|
开发者 Python
Python列表推导式:优雅与效率的完美结合
Python列表推导式:优雅与效率的完美结合
431 116
|
3月前
|
大数据 开发者 Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
381 109
|
3月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
465 119
|
3月前
|
开发者 Python
Python列表推导式:优雅与效率的完美融合
Python列表推导式:优雅与效率的完美融合
340 104
|
3月前
|
Python
Python列表推导式:优雅与效率的艺术
Python列表推导式:优雅与效率的艺术
309 99
|
3月前
|
数据处理 Python
解锁Python列表推导式:优雅与效率的完美融合
解锁Python列表推导式:优雅与效率的完美融合
290 99
|
3月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
445 95
|
4月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
493 99
|
4月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
362 100

推荐镜像

更多