copy

a=[1,2,3]
b=a
id(a)
55499272
id(b)
55499272

id()就是查看内存地址,是不是同一个对象。

c=a.copy()
id(c)
57940040

可见copy()出来的不是一个对象。

a=[1,2,3]
b=a
a[1]=99
a
[1, 99, 3]
b
[1, 99, 3]

列表元素变了,其他也跟着变了。

列表里的每一个元素都是独立的个体,是有自己的内存地址。

id(a)
58246344
id(a[0])
1347775968
id(a[1])
1347779104

所以a=b,表示两个列表指向了同一些元素。同一个杯子。
a的元素变了,b的元素也跟着变。

b=a.copy()
copy就相当于新起一个杯子,把元素都复制过去。

注意:

列表里有独立,也有一样?

b=a.copy()
a
['one', 2, ['triple', 4]]
b
['1', 2, ['triple', 4]]
id(a),id(b)
(57026760, 56966024)
id(a[0]),id(b[0])
(59464760, 33713432)
id(a[1]),id(b[1])
(1701146112, 1701146112)
id(a[2]),id(b[2])
(59447944, 59447944)
id(a[2][0]),id(b[2][0])
(59465264, 59465264)

b=a
无copy,不独立,一改皆改

b=a.copy()
浅copy,第一层独立,第二层会跟着改变

import copy

a=[1,2,[3,4]]
b=a
c=a.copy()
d=copy.deepcopy(a)

a[0]='one'
a[2][0]='three'

print(a)
print(b)
print(c)
print(d)

['one', 2, ['three', 4]]
['one', 2, ['three', 4]]
[1, 2, ['three', 4]]
[1, 2, [3, 4]]

copy.deepcopy()是深拷贝,所有的层数都会跟着变

————————————————————————————————

字符串

字符串方法:
s='Hello World'
s2=s.swapcase()
print(s2)

大写变小写,小写变大写。
按住ctrl,点击swapcase,就能看到方法的解释和类似源码
def swapcase(self): # real signature unknown; restored from __doc__
"""
S.swapcase() -> str

Return a copy of S with uppercase characters converted to lowercase
and vice versa.
"""
return ""

s1="i'll win CHAMPION"

s1.capitalize()
"I'll win champion"

s1.casefold()
"i'll win champion"

s1.center(50,'-')
"----------------i'll win CHAMPION-----------------"

s1.count('i')
2

s1.endswith('n')
False
s1.endswith('N')
True

s2='a\tb'
print(s2)
a b
s2.expandtabs(16)
'a b'

s1.find('win')
5

s3='{0} will win {1}'
s3
'{0} will win {1}'
s3.format('you','second')
'you will win second'

s4='{who} will win {what}'
s4.format(who='I',what='champion')
'I will win champion'

s1
"i'll win CHAMPION"
s1.index('win')
5
s1.index('win',2,11)
5

'33ddx'.isalnum()
True
'33ddx'.isalpha()
False

'3344'.isdecimal()
True
'3.344'.isdecimal()
False

'3344'.isdigit()
True
'3.344'.isdigit()
False

用isdigit()

'_3a'.isidentifier()
True
'3a'.isidentifier()
False
是否一个可用的变量名

'I am'.islower()
False
'7j'.islower()
True

'911.111'.isnumeric()
False
'911'.isnumeric()
True
是否只有数字

'dd'.isprintable()
True

' '.isspace()
True
' '.isspace()
True

'Main road'.istitle()
False
'Main Road'.istitle()
True

'MAIN'.isupper()
True

','.join('abc')
'a,b,c'
'-'.join(['abc','123','zzz'])
'abc-123-zzz'

'abc'.ljust(10,'*')
'abc*******'
len('abc'.ljust(10,'*'))
10
'abc'.rjust(10,'-')
'-------abc'

s1
"i'll win CHAMPION"
s1.lower()
"i'll win champion"
s1.upper()
"I'LL WIN CHAMPION"

s='\n word str \t'
s.strip()
'word str'
s.lstrip()
'word str \t'
s.rstrip()
'\n word str'

做转换的:
str1='abcde'
str2='12345'
table1=str.maketrans(str1,str2)
table2=str.maketrans(str2,str1)
str1.translate(table1)
'12345'
str2.translate(table2)
'abcde'

s='abc*123'
s.partition('*')
('abc', '*', '123')

s='1122 abc cbaabc'
s.replace('1','xx')
'xxxx22 abc cbaabc'
s.replace('c','9',1)
'1122 ab9 cbaabc'

s='hello world'
s.rfind('o')
7

s.rindex('o')
7
s.rindex('dd')
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: substring not found

s.rpartition('o')
('hello w', 'o', 'rld')

s
'hello world'
s.split()
['hello', 'world']
s.split('o')
['hell', ' w', 'rld']
s.split('o',1)
['hell', ' world']

split是把字符串变成列表

s.rsplit()
['hello', 'world']
s.rsplit('o')
['hell', ' w', 'rld']
s.rsplit('o',1)
['hello w', 'rld']

s2='a\nbc\n123'
s2.splitlines()
['a', 'bc', '123']

s
'hello world'
s.startswith('hel')
True
s.endswith('llo')
False
s.endswith('ld')
True

s='Hello World'
s.swapcase()
'hELLO wORLD'

s='abc uvw'
s.title()
'Abc Uvw'

s='101011'
s.zfill(20)
'00000000000000101011'

isdigit
replace
find
count
index
strip
center
split
format
join

——————————————————————————————————————

t1
(1, 2, 3, ['a', 'b', 'c'], 3, 1)
t1.count(1)
2
t1.index(2)
1
t1.index(['a','b','c'])
3
t1[1:-2]
(2, 3, ['a', 'b', 'c'])

元组是只读列表,有序但不可变。
但元组里的列表是可变的,因为元组存储的是列表的地址

深浅copy和字符串细节方法的更多相关文章

  1. python之路day07-集合set的增删查、列表如何排重(效率最高的方法)、深浅copy

    集合set 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  2. python基础3(元祖、字典、深浅copy、集合、文件处理)

    本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...

  3. python学习笔记三 深浅copy,扩展数据类型(基础篇)

    深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = #n1 = 'hahahaha' #赋值n2 = n1#浅co ...

  4. Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数

     一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...

  5. python基础(三)编码,深浅copy

    编码,深浅copy encode,decode在python2中使用的一些迷糊,python3中更容易理解 要理解encode和decode,首先我们要明白编码,字符和二进制的相关概念,简单来说,计算 ...

  6. 基础数据类型的补充和深浅copy

    一:关于str 的操作方法补充 1,s.isspace()   判断字符串是否只由空格组成,是,为True,否则,为False. s = ' ' #只能是以至少一个空格组成的字符串(全空格) prin ...

  7. python之数据类型补充、集合、深浅copy

    一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址 ...

  8. Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy

    1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...

  9. python 的内存回收,及深浅Copy详解

    一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...

随机推荐

  1. Lucene 全文检索引擎

    Apache Lucene PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程, 仅供各位程序猿们参考,这 ...

  2. Java NIO Overview

    Java NIO Overview Channels and Buffers Selectors   Jakob JenkovLast update: 2014-06-23

  3. Xshell 连接ubuntu虚拟机失败解决办法

    当我们在VMWare上安装好Ubuntu虚拟机后,有时候会需要使用多个terminal窗口,但是在虚拟机中多个窗口互相切换查看不方便,这时候用物理机的xshell工具连接到虚拟机中去就显得很方便.直接 ...

  4. python遇到的文件错误

    学习了json.load,运行时出现了以下错误 load读取的是前面写入的文件,如果读取的文件为空,则会出现这个错误,如果不为空,则正确.所以一定要保证读取的文件不为空.

  5. idea 热部署之JRebel安装-激活-简单使用(修改方法\配置文件均生效)

    1.简介 JRebel插件在IntelliJ IDEA中用于代码的热部署,即工程在已经启动的状态下修改代码,可以不用再重启服务,JRebel插件会自动帮我们编译代码,然后重启.整个重启的过程耗时非常短 ...

  6. 用js实现九九乘法口诀两种方式

    js实现九九乘法口诀两种方式: 第一种是用户输入一个数弹出所对应的乘法口诀: <script type="text/javascript"> function art( ...

  7. 更新linux下python版本

    # 安装所有的开发工具包 yum groupinstall -y "Development tools" # 安装其它的必需包 yum install -y zlib-devel ...

  8. BGRA与BGR的相互转换

    BGRA转BGR void BgraToBgr(BYTE *bgraData,int *bgraSize) { ,j=; j<*bgraSize; i+=,j+=) { *(bgraData+i ...

  9. 解决libc.so.6: version `GLIBC_2.14&#39; not found问题

    1.命令检查系统glibc支持的版本: strings /lib64/libc.so.6 |grep GLIBC_ 如果没有2.14或者其他版本的,需要下载安装 2.下载地址:http://pan.b ...

  10. SOA与微服务的区别

    乍一看: 1.SOA更抽象. 2. SOA是拆分服务后,用ECS等手段,将服务组合调度. 微服务则是拆分服务后组合成各种业务. https://blog.csdn.net/HeatDeath/arti ...