列表:可以修改,适用于中途需要添加元素的情形。
元组:不可以修改,适用于出于某种原因不能修改序列的情形
列表,元组和字符串都是序列
在我们的实际编程过程中,大多数情况下都能够使用列表解决问题,初级阶段唯一使用元组的是需要将元组用作字典的键
一:通用的序列操作
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值
》》》》
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 还可以使用