python关于字符串_Python中如何复制一个值或字符串?

update:

实际上存在复制字符串的方法。例如 ''.join(str)。

详见这篇文章:join()方法的神奇用处与Intern机制的软肋​mp.weixin.qq.comv2-ce26fc932afde458c17d7ef96e10bf32_180x120.jpg

-------------------------以下是原回答

正想问同样的问题,发现有人问了。不过看到这么少人回答,还答非所问,就知道像我们这样敏锐的人还是太少了。。。

我先帮题主补充一下问题,这样读者才有正确思考的起点。

下面,先是一个很长的字符串 s ,问题是:怎么复制一份相同的字符串,使它的内存地址跟字符串 s 不同呢?

In [1]: s="Python猫阿萨德红安的厚爱的厚爱的厚爱和冬奥会到的哈等候你2131

...: 111111111111111111223232sdfhsjhfsdkjhfj"

In [2]: id(s)

Out[2]: 1981117228848

像下面这样赋值,sw 字符串的字面值与s相等,且内存地址不同,这样的字符串是满足的,但它不是在字符串s的基础上复制出来的,所以就不是这个问题的答案。

In [3]: sw="Python猫阿萨德红安的厚爱的厚爱的厚爱和冬奥会到的哈等候你213

...: 1111111111111111111223232sdfhsjhfsdkjhfj"

In [4]: id(sw)

Out[4]: 1981117230192

(注:这里回应下唯一稍微靠谱的回答者@hehe ,“无法构造出两个值完全相同的字符串对象”这个说法,只在短字符串时成立,值完全相同的长字符串对象可以存在多个。)

如果像下面这样呢?还是不对。因为ww跟s一样,只是变量名,是对最初的字符串变量的引用,一个字符串有两个引用,但字符串还是只有一份。也不是这个题目的答案。

In [5]: ww=s

In [6]: id(ww)

Out[6]: 1981117228848

字符串不具备“复制”的方法。下面这个例子表明,列表有复制的方法 copy(),但是字符串没有。

In [7]: l=[1,2]

In [8]: k=l.copy()

In [9]: id(l)

Out[9]: 1981117991112

In [10]: id(k)

Out[10]: 1981119441224

我还尝试了字符串切片的方法,同样没法做到复制。

In [11]: p=s[:]

In [12]: id(p)

Out[12]: 1981117228848

我最终的结论是,Python 的字符串不支持复制操作。

那么,原因是啥呢?我也猜这是出于节省内存的考虑。但是猜测不是求知的正确方式。所以,才有了一开始我说的想要问同样的问题。。。。我先回答这个问题的上半部分:Python中无法复制字符串。

待回答的下半部分问题是:为什么Python中不支持复制字符串?

补充,刚查到的资料:

这个回答的意思是,不支持字符串复制,可以使字典查找更快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值