首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >python中将列表转换为元组的时间复杂性,反之亦然

python中将列表转换为元组的时间复杂性,反之亦然
EN

Stack Overflow用户
提问于 2013-09-10 11:07:53
回答 2查看 4.7K关注 0票数 5

将python列表转换为元组的时间复杂度是多少(反之亦然):

代码语言:javascript
运行
AI代码解释
复制
tuple([1,2,3,4,5,6,42])
list((10,9,8,7,6,5,4,3,1))

O(N)或O(1),即列表是否被复制,还是某个内部从可写变为只读的东西?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-10 11:39:01

这是一个O(N)操作,tuple( list )只是将对象从列表复制到tuple。因此,您仍然可以修改内部对象(如果它们是可变的),但是不能向元组添加新项。

复制列表需要O(N)时间。

代码语言:javascript
运行
AI代码解释
复制
>>> tup = ([1, 2, 3],4,5 ,6)
>>> [id(x) for x in tup]
[167320364, 161878716, 161878704, 161878692]
>>> lis = list(tup)

内部对象仍然引用相同的对象。

代码语言:javascript
运行
AI代码解释
复制
>>> [id(x) for x in lis]
[167320364, 161878716, 161878704, 161878692]

但是外部容器现在是不同的对象。因此,修改外部对象不会影响其他对象。

代码语言:javascript
运行
AI代码解释
复制
>>> tup is lis
False
>>> lis.append(10)
>>> lis, tup
([[1, 2, 3], 4, 5, 6, 10], ([1, 2, 3], 4, 5, 6)) #10 not added in tup

修改可变的内部对象将影响两个容器:

代码语言:javascript
运行
AI代码解释
复制
>>> tup[0].append(100)
>>> tup[0], lis[0]
([1, 2, 3, 100], [1, 2, 3, 100])

时间比较表明,列表复制和元组创建所需的时间几乎相等,但由于创建一个具有新属性的新对象的开销很大,所以元组创建成本较低。

代码语言:javascript
运行
AI代码解释
复制
>>> lis = range(100)
>>> %timeit lis[:]
1000000 loops, best of 3: 1.22 us per loop
>>> %timeit tuple(lis)
1000000 loops, best of 3: 1.7 us per loop
>>> lis = range(10**5)
>>> %timeit lis[:]
100 loops, best of 3: 2.66 ms per loop
>>> %timeit tuple(lis)
100 loops, best of 3: 2.77 ms per loop
票数 12
EN

Stack Overflow用户

发布于 2013-09-10 11:28:45

据我所知,没有一点可以切换,因为list (可变的)对象与tuple (不可变)对象完全不同。他们有不同的方法等。

你可以做的一个实验是:

代码语言:javascript
运行
AI代码解释
复制
>>> a = [1,2,3,4,5]
>>> a = (1,2,3,4,5)
>>> a
(1, 2, 3, 4, 5)
>>> b = list(a)
>>> b
[1, 2, 3, 4, 5]
>>> b[2] = 'a'
>>> b
[1, 2, 'a', 4, 5]
>>> a
(1, 2, 3, 4, 5)

要知道,如果它们引用的是内存中的确切位置,那么a也应该已经改变了。

这是我的理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18726969

复制
相关文章
.htaccess 全站资源重定向至 https
适用于已经部署完 https 证书的,类似阿里云虚机,只有首页重定向,而其他 html,js,css,image 等资源用 http 也能打开的情况。
Savalone
2020/02/11
7590
如何在Ubuntu 14.04上使用Apache将www重定向到非www
当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要还允许用户通过简单的域名访问到它,并在WWW子域名。也就是说,他们应该可以使用或不使用“ www. ”前缀访问您的域名,例如,example.com或者www.example.com在Web浏览器中,并显示相同的内容。虽然有多种方法可以设置,但为了保持一致性和搜索引擎优化考虑,最佳解决方案是选择您喜欢的域名,简单或www,并将另一个域重定向到首选域。此类重定向称为永久重定向或“301重定向”,可以通过正确配置DNS资源记录和Web服务器软件轻松设置。
你在哪里
2018/10/19
3.6K0
如何在Ubuntu 14.04上使用Nginx将www重定向到非www
当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要还允许用户通过简单的域名访问到它,并在WWW子域名。也就是说,他们应该可以使用或不使用“ www. ”前缀访问您的域名,例如,example.com或者www.example.com在Web浏览器中,并显示相同的内容。虽然有多种方法可以设置,但为了保持一致性和搜索引擎优化考虑,最佳解决方案是选择您喜欢的域名,简单或www,并将另一个域重定向到首选域。此类重定向称为永久重定向或“301重定向”,可以通过正确配置DNS资源记录和Web服务器软件轻松设置。
信姜缘
2018/10/19
2.8K0
如何在CentOS 7上使用Nginx将www重定向到非www
当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要还允许用户通过简单的域名访问到它,并在WWW子域名。也就是说,他们应该可以使用或不使用“ www. ”前缀访问您的域名,例如,example.com或者www.example.com在Web浏览器中,并显示相同的内容。虽然有多种方法可以设置,但为了保持一致性和搜索引擎优化考虑,最佳解决方案是选择您喜欢的域名,简单或www,并将另一个域重定向到首选域。此类重定向称为永久重定向或“301重定向”,可以通过正确配置DNS资源记录和Web服务器软件轻松设置。
苏子晨
2018/10/19
3.5K0
如何在CentOS 7上使用Apache将www重定向到非www
当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要还允许用户通过简单的域名访问到它,并在WWW子域名。也就是说,他们应该可以使用或不使用“ www.”前缀访问您的域名,例如,example.com或者www.example.com在Web浏览器中,并显示相同的内容。虽然有多种方法可以设置,但为了保持一致性和搜索引擎优化考虑,最佳解决方案是选择您喜欢的域名,简单或www,并将另一个域重定向到首选域。此类重定向称为永久重定向或“301重定向”,可以通过正确配置DNS资源记录和Web服务器软件轻松设置。
圣人惠好可爱
2018/10/12
4.4K0
如何将HTTP重定向到Apache上的HTTPS
HTTP ( 超文本传输​​协议 )是万维网 ( WWW )上数据通信的基本协议; 通常在Web浏览器和存储Web文件的服务器之间。 而HTTPS是HTTP的安全版本,其中“ S ”端代表“ Secure ”。
子润先生
2021/06/15
4.6K0
将网站http跳转至https,并将www域名重定向至不带www
实现了将http://liaobu.de, http://www.liaobu.de, https://www.liaobu.de 都跳转至https://liaobu.de 的效果
wo.
2021/06/15
3.5K0
istio: http 流量 301重定向到 https
下面截取本站 Gateway 配置中的一部分,只需添加最后两行即可实现流量重定向。
SRE扫地僧
2021/10/07
2.7K0
istio: http 流量 301重定向到 https
nginx设置http 301重定向到https
  今天有位客户问ytkah在nginx服务器如何设置http 301重定向到https,其实不难。他的服务器安装宝塔面板了,更好操作了。进入站点设置的配置文件,如下图所示,在第11行左右加入跳转代码  
ytkah
2020/03/25
12.5K0
使用 htaccess 将旧域名 301 重定向到新域名
如果更换了域名,那么为了把原来的域名的权重都转移到新域名上面,最好的方法是 301 重定向,我们可以使用 htaccess 将旧域名重定向到新域名,具体方法如下:
Denis
2023/04/15
4.2K0
Nginx 重定向所有子域名到www
vim .htaccess  或  vim  /var/www/html/.htaccess
阳光岛主
2019/02/18
6.4K0
Nginx 重定向所有子域名到www
dotnet core 不自动从 https 到 http 的 302 重定向
本文记录一个已知问题,或者准确来说是设计如此的行为,在 dotnet core 下,无论是 dotnet core 3.1 还是 dotnet 5 或 dotnet 6 或 dotnet 7 等,如果访问的 https 链接返回 302 状态码,且跳转的链接是一个 http 链接,那将不会自动跳转
林德熙
2023/04/07
1.6K0
Nginx配置SSL实现https请求并重定向http请求的实现
因为我的网站是部署在腾讯云上的,腾讯云同时也提供了免费的SSL证书(有效期1年)。
Bug生活2048
2018/08/31
4K0
Nginx配置SSL实现https请求并重定向http请求的实现
DTcms4/5中使用HttpModule将http访问301重定向到https
前面虽然讲过SSL在IIS开启的几种方式,比较常见的Microsoft URL Rewrite Module修改Web.Config如下:
崔文远TroyCui
2019/02/26
1.6K0
DTcms4/5中使用HttpModule将http访问301重定向到https
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/08/03
2K0
如何将 Linux 命令输出重定向到文件?
设置HTTP重定向为HTTPS
更多关于重定向内容:https://jingyan.baidu.com/article/09ea3ede6bd7c6c0aede3931.html 敲黑板,如果.htaccess文件中原本就有伪静态代码,要把上面的代码放在URL-rewrite代码之前。
林清猫耳
2018/12/19
2.1K0
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/07/14
1.8K0
如何将 Linux 命令输出重定向到文件?
vps配置ssl及https重定向
记录自己在配置vps及博客SSL证书时遇到的问题。 强制重定向https 有一种情况相信很多人都遇到过,就是虽然我们配置了ssl证书,但是https和http地址都是各自都可以单独访问。我们应该也见过类似于github的代码托管网站有强制https的开关。如果是这种情况我们还可以通过js进行301定向。 1 2 3 4 5 6 7 8 <script> var targetProtocol = "https:"; var host = "lruihao.cn"; if (window.lo
Cell
2022/02/25
1.4K0
vps配置ssl及https重定向
nginx 301 重定向、http 跳转 https
我与梦想有个约会
2023/10/21
5400
点击加载更多

相似问题

.htaccess -从www https重定向到非www https

13

如何使用.htaccess将HTTPS非www重定向到HTTPS www?

33

htaccess域重定向到https,子域重定向到https,非www重定向到www

10

htaccess -使用www将非www重定向到https

10

htaccess重定向301 https www到非www

01
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文