py学习之路6---元组,列表,字典,集合

警告:这几种类型有许多共同点,也有各自的特性,这些类型依靠其括号的不同来区分。


1.元组

在前几课的例子中,我们就用到了元组。

>>> print("%s %s %d %f"%(a_string,another_string,a_number,another_number))  
string1 string2 1 5.000000  

其中(a_string,another_string,a_number,another_number)就是元组

元组是不可更改的数据集合,其中的每个值都可以单独访问,在创建时被圆括号包含的就是元组。

元组包含对多种数据的引用,我们可以为一个元组命名

>>> a = (1,"asd")
>>> print(a)
(1, 'asd')
注意,可以通过print函数一次性输出元组全部的元素。
可以通过[number]的形式访问元组中的某个数据

>>> a = (1,2,3,4,5,6)
>>> print(a[0],a[1])
1 2
这里我们构建了一个元组a,它有6个元素,我们取出a[0],a[1]构成一个临时的元组( a[0],a[1])交给print输出。

需要注意的是元组中的数据位置是从0开始计算的。


py有一内置函数len()用于得到元组的长度

>>> a = (1,2,3,4,5,6)
>>> len(a)
6


元组是数据的集合,而元组本身也是一种数据类型,所以我们可以在元组中嵌套元组

>>> a = (1,2,3)
>>> b = (a,a,"hhh")
>>> print(b[0][2])
3
通过多个[]就可以访问 嵌套元组的数据了。


注意:元组被创建时有一些神奇的性质:

>>> a = ("a")
>>> b = ("a",)
>>> c = ()
>>> type(a)
<class 'str'>
>>> type(b)
<class 'tuple'>
>>> type(c)
<class 'tuple'>
我们可以看到a被识别为了字符串,这是需要注意的一点,可以在后面加一个“,”来避免这种现象



元组是不可变的:

>>> a = (1,2)
>>> a[0] = 2
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    a[0] = 2
TypeError: 'tuple' object does not support item assignment

试图改变元组中的值时会报错


此外,试图访问范围外的值时会报错

>>> a = (1,2)
>>> print(a[2])
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    print(a[2])
IndexError: tuple index out of range


基于元组的性质,我们可以用元组来储存一些不会被变更的数据,比如:

>>> month = ('January','February','March','April','May','June','July','August','September','October','November','December')
>>> month[0]
'January'
仍需注意,元组是从0开始计算的,一月对应的是month[0].

2.列表

列表如同元组,也包含从0开始引用的元素的序列。

列表用方括号创建

>>> a = [1,2,3]
可以用与元组相同的方式访问列表中的元素

>>> a[0]
1
>>> num = 1;
>>> a[num]
2
列表与元组的不同在于列表是可以修改的。

为a[0]重新赋值:

>>> a[0] = 10086
>>> a[0]
10086
通过append方法添加一个新元素:

>>> a.append(100)
>>> a[3]
100
通过extend方法添加多个新元素:

>>> a.extend([7,6,5,4,3])
>>> print(a)
[10086, 2, 3, 100, 7, 6, 5, 4, 3]

通过pop方法去除特定元素

>>> a.pop(0)
10086
>>> print(a)
[2, 3, 100, 7, 6, 5, 4, 3]

<1.为什么使用extend不会输出什么结果,而使用pop会输出一个值呢? 这种值叫做方法的返回值,一个方法可以有返回值,也可以没有,在后面会详细解释>

<2.这里可以看到append等方法的使用方式与len方法的使用方式是有区别的,主要在于,append等方法是来自列表表示的方法,或者说它们是a里面的方法,len方法是属于py内置的方法,可以不用任何前缀直接使用,这点在后面会详细讲解>


此外,列表的长度也可由len方法确定

>>> len(a)
9


同元组一样,不可以访问超出范围的部分。

>>> a[9]
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    a[9]
IndexError: list index out of range


可以将列表理解成其他语言里的数组,多了改变长度的功能。


3.字典

字典同样是数据的集合,但元组和列表都是靠数据的顺序检索的(比如a[0]是第一个),而字典是靠给定的键值检索的,键值同样可以是任何类型的数据。

字典的创建

a = {1 : 10,"2" : 20}

a = {}

访问其中的值

<em>>>> a = {1 : 10,"2" : 20}
>>> a[1]
10
</em>>>> a["2"]
20

字典可以方便的修改和添加元素;同样可以用print输出字典全部的键和对应的值;同样使用pop读取并删除某个元素

<pre name="code" class="python"><pre name="code" class="python">>>> a["x"] = 30
>>> a["2"] = 40
>>> print(a)
{1: 10, 'x': 30, '2': 40}
>>> a.pop("2")
40
>>> print(a)
{1: 10, 'x': 30}

 
 
通过keys和values方法回去所有的键或所有的值 

>>> a.keys()
dict_keys([1, 'x'])
>>> a.values()
dict_values([10, 30])

相同的键与值
字典依赖每个键的不同来区分同的元素,所以可以出现两个键有相同值的情况

>>> a = {1 : 1,2 : 1}
当我们试图为字典添加一个相同键名的值时,py会把它理解成赋值,然后覆盖之前的值,哪怕是在初始化的时候

>>> a = {"1" : 2,"1" : 20}
>>> a["1"]
20


4.序列的其他共有方法

引用最后一个元素:

>>> a = [1,2,3,4,5]
>>> a[-1]
5
在[]中输入负数,py将会从后往前访问元素,最后一个是-1,这里的第一个是-5


截取序列中的一段

>>> a = [1,2,3,4,5]
>>> b = a[1:4]
>>> print(b)
[2, 3, 4]

在[]输入x:y就可以截出从x开始到y之前的所有元素。

截取并不改变本身,所有也对元组有用
>>> a = (1,2,3,4,5)
>>> b = a[0:5]
>>> print(b)
(1, 2, 3, 4, 5)
观察输出值可以发现,序列截出来是序列,元组截出来的是元组,字典没有顺序所以截不了


5.集合

在py中,集合与字典类似,都用{}表示,只不过集合中只有键,没有键值。所以在集合中不存在重复的元素,我们可以利用这个性质去除重复元素。

>>> a = {1,1,1,1}
>>> print(a)
{1}
可以用set方法把列表转换为集合

>>> a = [1,2,1,4,3,2]
>>> set(a)
{1, 2, 3, 4}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值