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

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)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值