Python 字符串拼接、格式化输出、深浅复制
拼接:"+"号(同类型可拼接)
>>>li = [1,2]
>>>li + li
[1,2,1,2]
>>>li*2
[1,2,1,2]
>>>li
[1,2]
没有减号“-”,只有拼接"+"和重复"*"
一、字符串拼接
(一)."+"号。据说SQL语句用"+"号会很危险。
(二).%s 格式化字符串,从左到右一一对应。"%s"是占位符,语法:"%s %s %s" % (s1,s2,s3)
(三).join(iterable)。括号中需要一个可迭代类型,有且只有一个参数。元素之间的拼接。
其中," ".join(iterable)遍历到最后一个元素不会加空格了,因为它是元素之间的拼接,同理于split()
(四).format()。大括号"{}"是占位符,是索引。语法:"{}{}".format(s1,s2)。大括号中默认索引是0,1,(索引可以换位置),索引的是format()小括号中的元素。也需要一一对应,要保证占位符能拿到值。
其中,"{}"里可以指定名称,通过后面format()小扩内赋值的方式把值给前面的占位符。例:
s1 = "i"
s2 = "love"
s3 = "python" print("{c} {b} {a}".format(a=s1, b=s2, c=s3)) # 运行结果(相当于反向输出了)
# python love i
补充:format()非常强大,可以这样玩:
# 语法:{:} print("{:.1f}".format(12.22)) # 12.2
# 同理于"%.1f",只是语法和书写格式不一样。 print("{:.2%}".format(0.2222)) # 22.22%
# 格式化百分比 print("{:<10}".format(12)) # '12 '
# 输出占10位。尖尖向左,左对齐 print("{:*^10}".format(10)) # ****10****
# 脱字符"^",居中对齐,并且使用指定的"*"来填充
二、格式化输出
(一)."%s"格式化字符串
>>>'%15s'%'mkcry'
' mkcry'
默认右对齐,15表示宽度,不足会用空格占位。
减号"-",用作于左对齐
>>>'%-10s'%'mkcry'
' mkcry'
(二)."%d"格式化整数。
>>>"%d" %1.12
''
输出的也是个字符串。变成整数了,直接把小数删了。
(三)."%f"格式化小数。(m.n):m是宽度,n为小数,m大于格式化的数值的位数时才会显示。(小数位数默认是6位)
>>>"%6.2f" %1.111
' 1.11'
宽度6,小数2位。
>>>"%0.62" %1.111
'001.11'
用0来填充。
另外,还有下面这么一个梗:
>>>"%.2f" %1.255
'1.25' #保留2位小数,应该是四舍五入,这里为什么没有四舍五入?
>>>"%.20f" %1.255
'1.25499999999999989342' #保留20位小数就可以看出问题了,是因为浮点型数值,在python3中不精确的问题而造成的
一般实际应用中,小数保留1位来确保精度不丢失。
(四)."%c"格式化ASCII字符
>>>"%c" %65
'A'
>>>"%c" %"A"
'A'
字符转ASCII码的方案:ord()内置函数
>>>ord("A")
65
(五)."%o"格式化八进制
>>>"%o" %8
''
>>>"%o" %16
''
(六)."%x"格式化十六进制
>>>"%x" %16
''
>>>"%x" %10
'a'
>>>"%x" %15
'f'
(七)."%e"科学计数法格式
1千2百亿用科学计数法来表示就很直观了,不加逗号隔开的情况下看这种长串数字就是受罪。
>>>"%e" %120000000000
'1.200000e+11'
三、深浅复制
针对嵌套了列表才用的,因为列表是可变的。(这个点注意下,不然要陪80个亿)
除了copy.deepcopy()之外,其他的都是浅复制。
copy()和分片都是浅复制,只是复制表面,没法复制嵌套在里面的列表。而深复制是从里到外都复制了。
>>>li1 = [1,2]
>>>li2 = ["a",li1]
>>>li1
[1,2]
>>>li2
['a',[1,2]]
>>>li3 = li2.copy() #这是浅复制
>>>li3
['a',[1,2]]
>>>import copy
>>>li4 = copy.deepcopy(li2) #这是深复制
>>>li4
['a',[1,2]]
>>>li1.clear()
>>>li1
[]
>>>li2
['a',[]]
>>>li3
['a',[]]
>>>li4
['a',[1,2]]
li2、li3、li4都嵌套了li1。但li2、li3会因为是浅复制的原因,在li1.clear()的时候同步被清除了。
li4因为是深复制,li1是完全独立的,所以不会受到li1.clear()的影响。
浅复制中列表会跟着变,而深复制不会变。
网上找来一个碾平list的方法,碾完了把这个新的list重新赋值给一个变量。这下再怎么倒腾都没事了。
b = ["o", "g", "s", "f", 1, 2]
a = [1, "a", 2, [3, 4], ["c", ["d", "e", "f"]], [[5, 6], [7, 8]], b] # 碾平list
flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
a = flatten(a) print(a)
# [1, 'a', 2, 3, 4, 'c', 'd', 'e', 'f', 5, 6, 7, 8, 'o', 'g', 's', 'f', 1, 2]
小练习:
# 1.用4种方法,将列表li = ['I','python','like'],里面的单词拼成: I**like**python li = ['I', 'python', 'like'] #
print(li[0] + "**" + li[2] + "**" + li[1]) #
print("%s**%s**%s" % (li[0], li[2], li[1])) #
print("**".join([li[0], li[2], li[1]])) #
print("{}**{}**{}".format(li[0], li[2], li[1]))
print("{0[0]}**{0[2]}**{0[1]}".format(li)) # 索引方式
# 2. a=1.2,分别用3种格式,输出a:
'''
1.字符串格式,
2.整型格式,
3.浮点型: 输出占10位、保留2位小数 、带加号、靠左端
''' a = 1.2 #
print("%s" % a) #
print("%d" % a) #
print("%+-10.2f" % a)
# 3. print('aa\tbb') 如何输出,结果为: aa\tbb
# print('aa\tbb') print('aa\\tbb')
print(r'aa\tbb')
Python 字符串拼接、格式化输出、深浅复制的更多相关文章
- python - 字符串的格式化输出
# -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_2_str.py@ide: PyCharm Community ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- python字符串的格式化输出
很多时候我们在打印输入内容时希望有简单格式而不是拼接 一般做法: name = input("name:").strip() age = input("age:" ...
- Python字符串拼接、格式化输出、深浅复制
1.Python字符串拼接:方法挺多.挺好用的.灵活使用可使代码简洁.可读性好. #1.用4种方法,将列表li = ['I','python','like'], #里面的单词拼成: I**like** ...
- Python基础__字符串拼接、格式化输出与复制
上一节介绍了序列的一些基本操作类型,这一节针对字符串的拼接.格式化输出以及复制的等做做详细介绍.一. 字符串的拼接 a = 'I', b = 'love', c = 'Python'. 我们的目的是: ...
- Python基础学习_01字符串的拼接(字符串的格式化输出)
# 字符串的拼接 ---字符串的格式化输出 # 字符串的拼接 ---字符串的格式化输出 name = input("name:") age = input("age:&q ...
- Python 3.x 格式化输出字符串 % & format 笔记
Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...
- #python str.format 方法被用于字符串的格式化输出。
#python str.format 方法被用于字符串的格式化输出. #''.format() print('{0}+{1}={2}'.format(1,2,3)) #1+2=3 可见字符串中大括号内 ...
- python字符串拼接
Python字符串拼接 在Python的实际开发中,很多都需要用到字符串拼接,python中字符串拼接有很多,今天总结一下: 用+符号拼接 用%符号拼接 用join()方法拼接 用format()方法 ...
- python 字符串的格式化
python字符串的格式化分为两种:1)% 方式 2)str.format() 方式. str.format() 是比 % 较新的方式, 大多数的 Python 代码仍然使用 % 操作符.但最 ...
随机推荐
- DotnetBrowser高级教程-(5)使用内置的MVC UI框架-EasyMvc
如果DotnetBrowser只是实现了内置chrome浏览器和web/web socket server,似乎还不是很完美.因此,最新的DotnetBrowser已经内置对easy mvc控件的支持 ...
- linux 下查看硬件信息(mac,IP地址,硬盘型号,序列号等)
一.查看网卡mac地址 #安装lshw [root@server ~]# yum install lshw #使用方法 [root@rsync-server ~]# lshw -c network * ...
- 【Hive】Hive 安装&使用基础
2 安装 2.1 参考 2.1.1 下载 2.1.1.1 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/stable-2/ 2.1.2 安装指导 2 ...
- mysql 存储过程 演示样例代码
drop procedure if exists P_SEQUENCE; /** 暂省略包 @AUTO LIANGRUI 2014/6/27 T_PRO_PRODUCT 表 排序 对整个表进行按序号排 ...
- linux获取后台进程的控制台数据
linux提供了一个daemon函数,使得进程能够脱离控制台执行,实现了后台执行的效果.可是进程后台执行后,原本在终端控制台输出的数据就看不到了. 那么,如何才干找回这些数据? 这里.文章主题就环绕着 ...
- 百度兴趣点下载V1.4版
好东西就是不断的更改,升级出来的,经过连续四个版本的升级,本次版本受到用户的一致好评,也拿来在这里做个分享,期望对更多地用户起到一定的帮助! 还是一样,介绍一下其功能: 1.全国范围内的兴趣点任意区域 ...
- Android 四大组件学习之Server一
上次学习了Android四大组件Activity之后,我们深刻理解了Activity.这次我们学习四大组件Service. Service与Activity的级别是一样的,都是Android系统不可缺 ...
- python——父类与子类的一些说明
Python中类的初始化方法是__init__(),因此父类.子类的初始化方法都是这个,如果子类不实现__init__()这个函数,初始化时调用父类的初始化函数, 如果子类实现了这个函数,则要在这个函 ...
- python ——单下划线(约定)
命名规则: 通常使用小写单词,必要时用下划线分隔增加可读性. 使用一个前导下划线仅用于不打算作为类的公共接口的内部方法和实例变量. Python不强制要求这样; 它取决于程序员是否遵守这个约定. 使用 ...
- Nginx:解析HTTP配置的流程
参考资料:深入理解Nginx(陶辉) 书中有详细的讲解,这里只用本人的理解梳理一下该流程. 一点提议:对于像我这样的新手,面对暂时看不懂章节,建议先往下看一下(可能就会有新的理解或灵感),而不要死磕在 ...