列表和元组

列表:可以修改,适用于中途需要添加元素的情形。

元组:不可以修改,适用于出于某种原因不能修改序列的情形

列表,元组和字符串都是序列

在我们的实际编程过程中,大多数情况下都能够使用列表解决问题,初级阶段唯一使用元组的是需要将元组用作字典的键


一:通用的序列操作

1:索引:序列中的元素都有编号——从0开始递增

两种简单索引方法:

1:正数索引

list1 = list([0,1,2,3,4,5])
print(list1[0])

>>>0 # 输出的结果为索引的对应的位置的值

2:负数索引

list1 = [1,2,3,4,5,6]
list1[-1]

>>>6

如果函数调用返回一个序列,可以直接对其进行索引操作。例如,如果你只想获取用户输入的年份的第4位,可以像下面这样做

fourth = input("Year:")[3]
print(fourth)

>>>input:2005
>>>5

2:切片:使用两个索引来访问特定范围的元素

比如下面一个提示用户输出URL,并从中提取域名的小程序

# 从类似于http://www.something.com的URL中提取域名

url = input("Please enter the URL:")
domain = url[11:-4:1]# 1指的是步长为1 ,在后面会解释到,可以省略
print(domain)

>>>Please enter the URL:http://www.python.org
>>>python

这里我出现了一个错误,在进行切片时,我使用了括号而不是方括号,并且一时间还没有发现错误所在,在此指出来希望不会再犯:索引,切片操作需要使用方括号

切片操作需要满足的是:

# 步长默认为1
list1 = [1,2,3,4,5,6,7,8,9]
print(list1[1:5]) # 步长为正时,第一个索引要在第二个索引的前面
>>>[2, 3, 4, 5]

print(list1[1:-2])
>>>[2, 3, 4, 5, 6, 7]

# 步长为负时

list1 = [1,2,3,4,5,6,7,8,9]
print(list1[-1:-5:-1]) # 步长为负时,则相反,第一个索引要在第二个索引的后面
>>>[9, 8, 7, 6]

print(list1[::-1])
>>>[9, 8, 7, 6, 5, 4, 3, 2, 1]

从上面两个代码也可以观察到,切片得到的序列值只包含第一个索引,不包含第二个索引


3:序列相加:

使用加法运算符来拼接序列

list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
print(list3)
>>>[1, 2, 3, 4, 5, 6]

这种方法返回的一个新的序列,有一个函数可以不返回新的列表就达到列表拼接的作用

extend

# 将括号内的序列拼接到对象序列

list1 = [1,2,3]
list2 = [4,5,6]
list1.extend(list2)
print(list1)
>>>[1, 2, 3, 4, 5, 6]

extend函数也可以将字符串拼接到列表中,将字符串中的每一个字符作为列表的一个元素

# 拼接字符串

list1 = [1,2,3]
list2 = [4,5,6]
list1.extend("love")
print(list1)
>>>[1, 2, 3, 'l', 'o', 'v', 'e']


4:乘法:将序列复制多次并返回一个新的序列

list1 = [1,2,3]
list2 = list1*3
print(list2)
>>>[1, 2, 3, 1, 2, 3, 1, 2, 3]


5:成员资格:检查特定的值是否包含在序列中,使用in,返回的是bool值

一些in运算符的使用实例

》》》》大笑

str1 = "i love wangxiaojing"
"love" in str1
>>>True
str1 = "i love 王晓静"
input("Please enter a name:") in str1

>>>Please enter a name:王晓静
>>>True

序列通用的函数:求序列长度len,求最大值max,求最小值min

实例:

list1 = [45,15,45,162,489,16,56498]
print(len(list1)) # 求序列长度
>>>7
print(max(list1)) # 求序列最大值
>>>56498
print(min(list1)) # 求序列最小值
>>>15

至此,学习了对于序列的五种基本操作: 索引,切片,序列相加,乘法以及成员资格检查


睡觉,明天继续更新!!!...........


二:列表

1:list

语法:list( ):可以将任何序列作为list的参数,这与list的值可以使用任何值的原则相符合


2:赋值

1:给单个索引赋值
list1 = [1,2,3,4,5,6,7,8,9]
list1[0] =100
list1
>>>[100, 2, 3, 4, 5, 6, 7, 8, 9]

2:给切片赋值
name = list("Perl")
print(name)
>>>['P', 'e', 'r', 'l']
name[2:] = "ar"
print(name)
>>>['P', 'e', 'a', 'r']

还可以在不替换的情况下插入新元素

name = list("Pthon")
name[1:1] = "y"
name
>>>['P', 'y', 't', 'h', 'o', 'n']

3:列表的基本操作

增加元素:append,insert,extend
# 添加,在最后的位置添加一个元素

list1 = [1,2,3,4,5,6,7,8,9]

list1.append(10)
print(list1[-1])
>>>10
list1
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

语法:insert (添加到的索引,需要添加的值)

list1 = [1,2,3,4,5,6,7,8,9]
list1.insert(1,"man")
list1
>>>[1, 'man', 2, 3, 4, 5, 6, 7, 8, 9]

语法:list1.extend(list2)将list2添加到list1的尾部

a = [1,2,3]
b = [4,5,6]
a.extend(b)
a
>>>[1, 2, 3, 4, 5, 6]

删除元素:del,pop,remove

del:根据索引删除,没有返回值

num = [1,2,3,4,5]
del num[2]
num
>>>[1, 2, 4, 5]

pop:删除最后一个元素,有返回值

num = [1,2,3,4,5]
num.pop() # 可以默认是弹出最后一个元素
>>>5
num.pop(1) # 可以添加索引弹出指定索引元素
>>>2

remove:根据值删除元素,没有返回值

num = [1,2,3,4,5]
num.remove(3)
num
>>>[1, 2, 4, 5]

清空列表:clear

不改变原有列表

num = [1,2,3,4,5]
num.clear()
num
>>>[]

复制列表:copy

浅复制,与list (a) 和 a[:]类似

name = ["name"]
a = name.copy()
a
>>>['name']


计算元素出现次数:count

a = [1,2,4,5,3,1,4,65,3,1,4,2,1,4,5]
a.count(1)
>>>4

查找元素索引;index

a = [2,4,5,3,1,4,65,3,1,4,2,1,4,5]
a.find(1)
>>>4
a.find(11)
>>>AttributeError # 没有查找到,直接返回错误

反转列表:reverse,就地反转

name = ["one","two","three"]
name.reverse()
name
>>>['three', 'two', 'one']

排序:sort,就地排序

name = ["one","5","two","three"]
name.sort()
name
>>>['5', 'one', 'three', 'two']

有关于sort的高级排序

sort(key)可以根据key的作用来进行排序

def lens(str1):
    if len(str(str1)) < 5:
        print("11")
        return 0    
    
    if len(str(str1)) >= 5 and len(str(str1)) <= 10:
        print("22")
        return 1

    if len(str(str1)) > 10:
        print("33")
        return 2
    
list1 = ["one","aaaaaa","ssdasdasdasdsa"]
list1.sort(key=lens)
list1
>>>11
>>>22
>>>33
>>>['one', 'aaaaaa', 'ssdasdasdasdsa']


3:元组

关于元组,使用于列表的元素大都不适用,比如,增加:append,插入,insert,添加列表,extend,删除,del,根据值删除,remove,弹出pop,清除,clear,排序,reverse,大小顺序,sort,计数,count还可以使用,查找index还可以使用,复制copy 还可以使用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值