码迷,mamicode.com
首页 > 编程语言 > 详细

python元组

时间:2018-05-08 22:21:11      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:edit   license   recent   字符   bbb   copyright   oca   type   ast   

元组


python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组声明后,长度就固定了。

In [1]: my_strs=("a","bbb",ccc)

In [2]: my_strs
Out[2]: (a, bbb, ccc)

In [3]: my_strs[0]
Out[3]: a

In [4]: my_strs[-1]
Out[4]: ccc

In [5]: my_strs[3]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-5-978c5894f0f0> in <module>()
----> 1 my_strs[3]

IndexError: tuple index out of range

In [6]: my_strs[0]="aaa"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-4152d9453e33> in <module>()
----> 1 my_strs[0]="aaa"

TypeError: tuple object does not support item assignment

In [8]: len(my_strs)  #定义好了元组,长度就固定了。
Out[8]: 3


In [11]: name=[1,2,3,4]

In [12]: my_tuple=(100,200,name) #元组中的元素为列表

In [13]: my_tuple
Out[13]: (100, 200, [1, 2, 3, 4])

In [15]: my_tuple[2]
Out[15]: [1, 2, 3, 4]

In [16]: my_tuple[2][0]=100 #元组中若包含列表,列表本身是可以修改的。

In [17]: my_tuple
Out[17]: (100, 200, [100, 2, 3, 4])

元组没有增删改,只有查操作内置函数index, count ,in, not in

In [17]: my_tuple
Out[17]: (100, 200, [100, 2, 3, 4])

In [19]: my_tuple.index(100)
Out[19]: 0

In [20]: my_tuple.count(100)
Out[20]: 1

In [21]: 100 in my_tuple
Out[21]: True

In [22]: 100 not in my_tuple
Out[22]: False

In [23]: 

实现列表循环输出

#用for循环实现
In [23]: for i in name:
    ...:     print(i)
    ...:     
100
2
3
4

In [24]: for i in my_tuple:
    ...:     print(i)
    ...:     
    ...:     
100
200
[100, 2, 3, 4]

In [25]: range(1,100)
Out[25]: range(1, 100)

In [26]: for i in range(1,10):
    ...:     print(i)
    ...:     
1
2
3
4
5
6
7
8
9

In [27]: c=range(1,10)

In [28]: c
Out[28]: range(1, 10)

#用while实现
In [29]: i=0

In [30]: while i<len(name):
    ...:     print(name[i])
    ...:     i+=1
    ...:     
100
2
3
4

range的优化:

[root@localhost ~]# python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> c=range(1,10) 
>>> c
[1, 2, 3, 4, 5, 6, 7, 8, 9] #python2中直接返回列表
>>> exit()
[root@localhost ~]# python3
Python 3.6.5 (default, May  1 2018, 16:43:30) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> c=range(1,10)     #懒加载,只有使用访问里面的元素时才会得到一个列表,节省内存空间。 python3优化后的处理。
>>> c
range(1, 10)

可变类型和不可变类型(值是可变还是不可变)


不可变类型:数值、字符串、元组...

可变类型:列表

说明:

python中的整数不限制大小,数值占用的字节1、2、4、8...由于整数占用的字节大小是不同的,因此不能更改。

字符串定义好之后不会改变,字符串的操作是生成新的字符串,原本的字符串没有改变。

In [31]: a=1 #变量a指向数值为1的内存空间;

In [32]: a
Out[32]: 1

In [33]: a=2 #变量a指向数值为2的内存空间

In [34]: a  #改变的是a的引用指向,并非将原本1的内存的值修改为2,当内存中的值没有被任何一个变量引用的时候,内存会自动回收
Out[34]: 2

 

 

 

 

 

 

 

python元组

标签:edit   license   recent   字符   bbb   copyright   oca   type   ast   

原文地址:https://www.cnblogs.com/zhaoyujiao/p/9010873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!