欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 入门学习笔记 2018.7.15 列表和元组

程序员文章站 2022-05-30 09:13:24
...
Edward=['Edward Smith',42];
lucas=['Wenny Lucas',20];
Database=[Edward,lucas];
print(Database)

以上是序列的最基本操作

显示结果会是

[['Edward Smith', 42], ['Wenny Lucas', 20]]

这是一个名为Database的序列,且序列中有两个元素,分别为Edward 和 Lucas

而如果操作为

print(Database[0])

则会只输出第一个元素的内容

这就是列表的索引

而Python支持反向索引,即列表的最后一位编号为-1, 倒数第二位为-2,以此类推

字符串字面值能直接使用索引,如

print(‘Hello’[1])

输出

当函数结果返回序列是,可以直接对返回结果进行操作,如

input('Year:')[3]

2.2     分片

利用分片可访问一片范围内的元素,如

lucas='https://www.youtube.com/';

print(lucas[5:9])

 

输出为

 

://w

需要注意的是,分片的第一个数字代表的元素在表示范围内,而最后一个数字代表的则不在

最后的数字因此可以是超越边界的,且超越边界的数字显示出的内容相同

print(lucas[5:24])
print(lucas[5:26])

两句的输出为

://www.youtube.com/
://www.youtube.com/

捷径!

要使分片的输出结果包含结尾的元素,空置分片后一个索引即可

print(lucas[5:])

输出结果与上文相同这种方法同样适用于开头的元素,尽管与将前一个索引置为0无异

print(lucas[:7])
print(lucas[0:7])

空置两端的索引,则会输出整个序列

实例:url的提取

#对http://www.baidu.com的域名进行提取
url=input('Enter the url:');
domain=url[11:-4]
print('Domain name:'+domain)
Enter the url:http://www.baidu.com
Domain name:baidu

 

与本人在mips指令中不同,分片的步长同样能进行设置,但是设置步长的数被放置在的两个索引的后面,例如

 

domain=url[11:-4:2]

输出为

biu

而当步长设置为负数时,将从右向左提取元素

特别注意,不能简单的直接将两个索引的数字取负数,而要注意索引的开始数字和结束数字分别是取和不取的

domain=url[-5:10:-2]

输出

uib

2.3 序列相加

只有相同类型的序列才能相加,如

[1,2,3]+[4,5,6]
[1,2,3,4,5,6]

[1,2,3]+'Hello'

则会报错

2.4    乘法

将序列乘以一个数n将会得到一个新的将该序列重复n次的序列

而当我们想要创立一个空的列表但是该列表却占用10个长度的空间时该怎么办?

这时可以使用None

None为Python内部的内建值,代表着空的空间,因此初始化一个10长度列表可以写为

sequence=[None]*10
print(sequence)

输出为

[None, None, None, None, None, None, None, None, None, None]

2.5    成员资格

sequence='abcdefg';
print('cd' in sequence)

输出值为true

而若将'cd'改为'cg'则就会返回false了

不仅仅是字符串能够接受查询,序列也能够接受,例如

sequence=['lucas','edward','astralis']
print('lucas' in sequence)
true
sequence=['lucas','edward','astralis']
name=input('Name:');
if(name in sequence):print('Yes')
Yes

2.6    长度、最小最大值

len, min 和max三种函数

len函数返回序列中元素的数量

min|max 函数返回序列中最小和最大的元素

sequence=['lucas','edward','astralis']
print(len(sequence))
3

 

>>>sequence=[1,2,3,4,5]
>>>print(len(sequence))
>>>print(min(sequence))
5
1

 

3.1    list函数

 

将字符串拆开为单个字符组成的序列,可以使用list函数

>>>list('Hello')
['H','e','l','l','o']

3.2    列表操作

列表赋值 

>>x=[1,1,1]
>>x[1]=2;
>>>print(x)
[1,2,1]

删除元素

del 语句

sequence=[1,2,3,4,5]
del sequence[3];
print(sequence)
[1,2,3,5]

该元素完全消失,并且数组长度也减少了一个单位
 

分片赋值

name=list('peak');
name[2:]=list('ar')
print(name)
['p', 'e', 'a', 'r']

并且赋值时还能插入新的元素,比如上方的例子中

name=list('peak');
name[2:2]=list('ar')
print(name)
['p', 'e', 'a', 'r', 'a', 'k']

3.3    列表方法

1) append

    利用append()函数将元素添加到列表的尾部

>>>1st=[1,2,3];
>>>1st.append(5);
>>>1st
[1,2,3,5]

2) count

  count()函数用于统计在列表中元素出现的次数

>>name=['a','a','b','f','k'];
>>p=name.count('b')
>>print(p)
1

3) extend

  extend()函数用于拓展现有的列表

  它能够在现有列表的末尾一次性添加另一个序列的多个值

>>name=['a','a','b','f','k'];
>>name.count('b')
>>name_2=['A','B','C'];
>>name.extend(name_2)
>>print(name)
>>print(name_2)
['a', 'a', 'b', 'f', 'k', 'A', 'B', 'C']
['A','B','C']

值得注意的是,extend会改变原来的列表的内容

而对于列表的相加,它对原来的两个列表的值都不会进行改变,只会返回一个合并值

>>name=['a','a','b','f','k'];
>>name_2=['A','B','C'];
>>print(name+name_2);
>>print(name);
>>print(name_2)
name=['a','a','b','f','k'];
name_2=['A','B','C'];
print(name+name_2);
print(name);
print(name_2)

这种操作实际上是创建了两个原来的列表的副本,因此

a=a+b的效率并没有a.extend(b)高

4) index

  index()可以返回列表中的第一个匹配项的位置

>>a=[6,6,5,7,'u','p'];
>>a.index('u')
6

5)insert

正如其名,insert()函数就是用来向列表中插入新的元素。函数参数包括所想要插入的位置以及插入的元素。

>>name=['a','b','c','d','e','f']
>>name.insert(3,'G')
>>print(name)
['a','b','c','G','d','e','f']

6)pop

pop类似于栈的操作,移除列表中的元素(默认最后一个),并返回该元素的值

函数参数可以选择移除的元素的位置

>>name=[1,2,3,4,5]
>>name.pop();
>>print(name)
[1,2,3,4]
5

把pop()和append()函数合在一起能实现栈的效果,后进先出

>>name=[1,2,3,4]
>>name.append(name.pop())
>>print(name)
[1,2,3,4]

7)remove

remove()能删除列表中的指定元素

>>x=[1,2,3]
>>x.remove(2)
>>print(x)
[1,3]

8) reverse

reverse()函数能将列表中的元素反向存放

9)sort

sort()函数能将列表元素进行排序然后存放。注意,当我们想要一个存放着排序后的列表时,下面方法

>>x=[1,4,2,8,5,7]
>>y=x.sort()
>>print(y)
None
>>y=x
>>y.sort()
>>print(y)
[1,4,2,8,5,7]

是不可取的。而替代方法有两种,一种是创建新的字符串再复制原字符串到这个新字符串,最后再对新的字符串进行sort操作。

或者,使用sorted()函数,如下所示

>>x=[1,2,4,5,3]
>>y=sorted(x)
>>print(y)
[1,2,3,4,5]

10) 高级排序

可以使用compare()函数来自定义排序方式,也可以用cmp()来进行默认排序。sort函数可以有两个参数,分别是key和reverse

>>x=[1,4,2,8,5,7]
>>x.sort(reverse=True)
>>x
[7,5,8,2,4,1]
>>y=['a','acd','ab']
>>y.sort(key=len)
>>y
['a','ab','acd']

4. 元组

元组是一个不可变的序列,与列表类似,但是元组的元素不能被修改。创建元组需要在元素的后面加一个逗号,如

>>1,2,3
(1,2,3)
>>(1,)
(1,)
>>()#空元组
()
>>3*(1,)
(1,1,1)

4.1 tuple函数

与list函数类似,将一个序列作为参数并转换为元组

1,2,3,4

>>tuple([1,2,3])
(1,2,3)
>>tuple('hape')
('h','a','p','e')

4.2 元组的基本操作

>>x=(1,2,3)
>>x[1]
2
>>x[:1]
(1)