Python基础教程 学习笔记 第二章 列表和元组

在这里插入图片描述最常用的序列:列表,元组,字符串
列表—可修改
元组—不可修改

一.通用的序列操作

索引,切片,相加,相乘,成员资格检查,迭代(循环章节讲),以及一些内置函数。

1.1.索引

注意 索引 0 是第一个元素
索引 -1 是倒数第一个元素

示例程序要求你输入年、月(数1~12)、日(数1~31),再使用相应的月份名等将日期打印出来

months=[
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'Novermber',
    'December',
    ]

# 一个列表,其中包含数1~31对应的结尾
ending=['st','nd','rd']+17*['th']\
        +['st','nd','rd']+7*['th'] + ['st']

year=input('please input the year: ')
month=input('Please input the month: ')
day=input("please input the day: ")
#转换整数以便索引
month_num=int(month)
day_num=int(day)

# 别忘了将表示月和日的数减1,这样才能得到正确的索引
month_name=months[month_num-1]

运行结果:

Year: 1974
Month (1-12): 8
Day (1-31): 16
August 16th, 1974

1.2.切片

第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号(可以用不存在的第n+1个(索引n)表示到最后一个)

>>> tag = '<a href="http://www.python.org">Python web site</a>'
>>> tag[9:30]
'http://www.python.org'
>>> tag[32:-4]
'Python web site

省略某个索引,即直到终点或从起点开始

如果第一个索引指定的元素位于第二个索引指定的元素后面,结果就为空序列

中间可增加一个数为步长,步长可正可负,负时要求,第一个索引大于第二个索引.

省略起始和结束索引时,步长为正数时,它从起点移到终点,而步长为负数时,它从终点移到起点。

1.3.序列相加*

用加法运算符来拼接序列

>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'
'Hello, world!'
>>> [1, 2, 3] + 'world!'
Traceback (innermost last):
File "<pyshell>", line 1, in ?
[1, 2, 3] + 'world!'
TypeError: can only concatenate list (not "string") to list

! ! ! 不能拼接字符串和列表(不同类型的序列)

1.4.序列乘法

将序列与数x相乘时,将重复这个序列x次来创建一个新序列

>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>> [42] * 10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

None,空列表,初始化

空列表:
空列表是使用不包含任何内容的两个方括号( [] )表示的

None表示 什么都没有 的值

>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

1.5.成员资格

要检查特定的值是否包含在序列中,可使用运算符 in 。
它检查是否满足指定的条件,并返回相应的值:满足时返回 True ,不满足时返回 False 。(布尔运算符)

>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
>>> users = ['mlh', 'foo', 'bar']
>>> input('Enter your user name: ') in users
Enter your user name: mlh
True
>>> subject = '$$$ Get rich now!!! $$$'
>>> '$$$' in subject
True

1.6.长度,最小值和最大值

内置函数 len,min,max

>>> numbers = [100, 34, 678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
>>> max(2, 3)
3
>>> min(9, 3, 2, 5)
2

二.列表

2.1.list

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

可将任何序列作为 list 的参数


列表->字符串: ‘’.join(somelist)

2.2.基本列表操作:

2.2.1.给元素赋值

>>> x = [1, 1, 1]
>>> x[1] = 2
>>> x
[1, 2, 1]

2.2.2. 删除元素 del
可删除元素或切片

>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

2.2.3.给切片赋值

①通过使用切片赋值,可将切片替换为长度与其不同的序列。

②还可在不替换原有元素的情况下插入新元素

>>> numbers = [1, 5]
>>> numbers[1:1] = [2, 3, 4]
>>> numbers
[1, 2, 3, 4, 5]

③切片可以有步长

2.3列表方法

2.3.1.append
append将一个对象附加到列表末尾,无返回值

2.3.2.clear
clear 就地清空,无返回值

2.3.3.copy
copy 复制一个副本,用于复制列表(类似深复制)

2.3.4.count
count 计算指定的元素在列表中出现了多少次

2.3.5.extend
extend 让你能够同时将多个值附加到列表末尾,可将这些值组成的序列作为参数
#区别于append, append只是添加一个元素(这个元素可以是又一个序列)
#区别于拼接,+,拼接返回一个新的列表,extend是修改这个列表
myList.extend(lst)#效率高于myList=myList+lst
#也<=>myList[len(myList):]=lst
2.3.6.index
index 在列表中查找指定值第一次出现的索引

2.3.7.insert
insert 用于将一个对象插入列表

2.3.8.pop
pop从列表中删除一个元素(默认为最后一个元素),并返回这一元素

2.3.9.remove
remove 用于删除第一个为指定值的元素

2.3.10.reverse
reverse 按相反的顺序排列列表中的元素


如果要按相反的顺序迭代序列,可使用函数 reversed 。这个函数不返回列表,而是返回一个迭代器(迭代器将在第9章详细介绍)。你可使用 list 将返回的对象转换为列表。


2.3.11.sort
sort用于对列表就地排序

myList=[5,6,7,2,3,1,9,4,8]
myList.sort()
print(myList)
 #若只想得到排序后的副本,不修改列表
   #方式1
print('排序方式1')
myList=[5,6,7,2,3,1,9,4,8]
lst=myList.copy()
lst.sort()
print(myList)
print(lst)#不能myList().copy().sort()

x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
print('x = ')
print(x)
x.sort(key=len)
print(x)

x=[5,6,7,2,3,1,9,4,8]
print('x = ')
print(x)
x.sort(reverse=True)
print(x)
   #方式2  使用函数 sorted 参数可以是任何序列,都返回一个列表
print('排序方式2')
lst=[5,6,7,2,3,1,9,4,8]
myList=[5,6,7,2,3,1,9,4,8]
lst=sorted(lst)
print(myList)
print(lst)

x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
print('x = ')
print(x)
print(sorted(x,key=len))

x=[5,6,7,2,3,1,9,4,8]
print('x = ')

高级排序:
sort的两个可选参数 key reverse (都是关键字参数)
key为排序的依据
reverse 决定正序(False)or反序(True)

三.元组tuple

只要将一些值用逗号分隔,就能自动创建一个元组

>>> 1, 2, 3
(1, 2, 3)

空元组: ()

!!!只含一个元素的元组: (42,) #最后有逗号 ,否则(42)<=>42

tuple:将一个序列作为参数,并将其转换为元组

元组作用:
①.它们用作映射中的键(以及集合的成员),而列表不行。映射将在第4章详细介绍
②.有些内置函数和方法返回元组,这意味着必须跟它们打交道。只要不尝试修改元组,与元组“打交道”通常意味着像处理列表一样处理它们(需要使用元组没有的 index 和 count
等方法时例外)。

元组的切片也是元组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值