初学者python笔记(列表)

本篇是关于可迭代对象中的列表一些相关盲点的记录。
可迭代对象简单描述:可以被for循环执行的对象(字符串,列表,元组,字典…)

  1. input()方法接收的其实只是字符串
    a = input(“请输入:”) #输入的是一个字符串类型,
    b = int(input(“请输入:”)) #将输入的函数转化为数字类型
value = "5+9"  #是一个字符串
v1,v2 = value.split('+')  #将'+'作为分隔符,前半部分赋值给v1,后半部分赋值给v2
v1 = int(v1)
v2 = int(v2)
v = v1+v2  #int()后就可以做运算了
print(v)

因为v1和v2都被转化成数字型了,所有v结果自然是:14

  1. 列表(list类)(特征:中括号,可修改),取值方法
li = [1,12,9,"age",["串串香",["19",10],"今麦郎"],"alex",True]  #通过list类创建的一个对象li
print(li)  #列表可以作为一个整体打印出来
print(li[2])  #通过索引2(即下标,从0开始)来取元素9
#通过切片取3到5的元素,取出的结果仍然是个列表,范围是大于等于3,小于5,所以只有两个元素
print(li[3:5])  
#也支持for和while循环取值,即一个一个全部输出
for item in li:
	print(item)

结果是:
[1, 12, 9, ‘age’, [‘串串香’, [‘19’, 10], ‘今麦郎’], ‘alex’, True]
9
[‘age’, [‘串串香’, [‘19’, 10], ‘今麦郎’]]
1
12
9
age
[‘串串香’, [‘19’, 10], ‘今麦郎’]
alex
True

  1. 列表可以修改
li = [1,12,9,"age",["串串香",["19",10],"今麦郎"],"alex",True]
li[1] = [11,22,33,44]  #通过下标修改
li[1:3] = [120,90]  #通过切片修改
print(li)
#删除某下标为1的元素,即删除12:
del li[1]
print(li)

结果是:
[1, 120, 90, ‘age’, [‘串串香’, [‘19’, 10], ‘今麦郎’], ‘alex’, True]
[1, 90, ‘age’, [‘串串香’, [‘19’, 10], ‘今麦郎’], ‘alex’, True]

  1. 列表类似于C语言中的数组,并且可以多维
li = [1,12,9,"age",["是正文",["19",10],"庞麦郎"],"alex",True]
v = li[4][1][0][1]  #类似四维数组
print(v)

答案是:9

  1. 字符串转列表时,会把每一个元素当成列表中的元素
s = "ajfskgahgkashgjhufywuyrlioqgfnjd"
new_li = list(s)
print(new_li)

结果是:
[‘a’, ‘j’, ‘f’, ‘s’, ‘k’, ‘g’, ‘a’, ‘h’, ‘g’, ‘k’, ‘a’, ‘s’, ‘h’, ‘g’, ‘j’, ‘h’, ‘u’, ‘f’, ‘y’, ‘w’, ‘u’, ‘y’, ‘r’, ‘l’, ‘i’, ‘o’, ‘q’, ‘g’, ‘f’, ‘n’, ‘j’, ‘d’]

  1. 将列表拼接成一个字符串
li = ["123","alex"]
v = "".join(li)
print(v)

结果是:123alex

  1. **append()方法与extend()**方法
    一个是将传入的数据当一个整体加入到列表中,一个是将传入的对象当成多个对象加入到列表中
li = [11,22,33,44]
li.append(5)  #在li的后面追加一个5
li.append([66,77,"age"])  #也可以列表,元组或字典
print(li)
li.clear()  #清空列表
li.extend([66,77,"age"])
li.extend("不得了")  #则会将"不得了"分开成3个元素加入到列表中
print(li)

结果是:
[11, 22, 33, 44, 5, [66, 77, ‘age’]]
[66, 77, ‘age’, ‘不’, ‘得’, ‘了’]
Ps:不过在python3中,想要加入多个元素好像只能弄成列表,元组或者字典,ppend()和extend()不能直接传入多个值

  1. 拷贝与计算次数
li = ["alex",True,43,22,54,"age",22]
v = li.copy()  #拷贝一份到v
print(v)
v2 = li.count(22)  #计算某元素出现的次数
print(v2)

结果是:
[‘alex’, True, 43, 22, 54, ‘age’, 22]
2

  1. **index()索引与insert()**插入
li = [11,22,33,22,44]
v = li.index(22)  #从前往后找,第一个与22匹配的位置
print(v)  
li.insert(0,99)   #在指定位置0插入元素99,即整个列表的前端
print(li)

结果是:
1
[99, 11, 22, 33, 22, 44]

  1. 删除之pop()remove()
    pop删除为某个值并获取删除的值到某个变量(指定索引,默认为最后一个)
    remove删除为从左边开始数删除遇到的第一个指定元素,返回值是None
li = [11,22,33,22,44]
v = li.pop()  
print(v)
li.remove(22)
print(li)
v1 = li.remove(22)
print(v1)

结果是:
44
[11, 33, 22]
None

  1. 列表的翻转排序替换
    列表其实没有replace()这个方法,如果需要替换的话,必须先转换成字符串才可以实现replace()
li_1 = [11,44,22,33,22]
li_1.reverse()  #翻转列表中的元素
print(li_1)
li_1.sort()  #将列表元素排序,默认从小到大排
print(li_1)
li_1.sort(reverse=True)  #从大到小排
print(li_1)

li_2 = [55,22,00,'name?','age?',520]
st = str(li_2)  #用str()将列表转换成字符串类型
v = st.replace("name?","alex")  #用'what?'替换元素'alex'
print(v)

结果是:
[22, 33, 22, 44, 11]
[11, 22, 22, 33, 44]
[44, 33, 22, 22, 11]
[55, 22, 0, ‘alex’, ‘age?’, 520]
Ps:其实这样的替换还不够好,它只能替换一个元素,但我们可以这样:

li=[5,'有','幸',1,'生','you','你']
dic={5:"我",1:"一","you":"有"}  #字典+键值对
li=[dic[i] if i in dic else i for i in li]
print(li)

结果是:
[‘我’, ‘有’, ‘幸’, ‘一’, ‘生’, ‘有’, ‘你’]
这里是利用了键值对来替换多个元素,这种方法真的非常好用,
第三行代码如果实在不理解,就直接拿来用也行,这是我自己做的简单解释:

#i是dic字典中的key(键),即 5,1,'you',dic[i]则是字典中的value(值)
li=[dic[i] if i in dic
            else i for i in li]
#如果key是列表里的元素,就将dic[i]放进去,即键值对中的值
#否则就遍历另外的key,再看是否满足条件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章