day4:数据结构list

1,一直输入用户名,输入Q退出,注意用户的输入别忘了加strip,和upper不区分大小写,list最后一位添加append

li = []
while 1:
    name = input(">>>").strip()
    if name.upper() == "Q":
        break
    else:
        li.append(name)
print(li)

运行结果:
>>>lisa
>>>lucy
>>>jack
>>>mary
>>>q
['lisa', 'lucy', 'jack', 'mary']

2,在list的某个位置插入一项insert:

li.insert(2,'bob')
print(li)
#原来的字符串只有一个bob,那么会默认在最后位置再添加一个bob

 运行结果:
>>>bob
>>>q
['bob']
['bob', 'bob']

3, 按照字符串每一位拆开来添加extend,永远按照数据类型的最小单位来extend,注意元祖只有一项的时候需要加逗号,不然还表示原来的数据类型,注意extend必须是可迭代的类型,int就不可以,可迭代的如list,str,dict,set,不可迭代的如int,bool:

li = ['lisa','mary']
li.extend(["lucy"])
print(li)


li.extend(("lucy",))
print(type(("lucy",)))
print(li)

li.extend(("lucy"))
print(type(("lucy")))
print(li)

li.extend({"lucy"})
print(li)

li.extend("lucy")
print(li)

运行结果:
['lisa', 'mary', 'lucy']
<class 'tuple'>
['lisa', 'mary', 'lucy', 'lucy']
<class 'str'>
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y']
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y', 'lucy']
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y', 'lucy', 'l', 'u', 'c', 'y']

4,extend元祖类型的时候只能添加一个

li = ['lisa','mary']
li.extend(("lucy",))
# 注意元祖只会添加第一个
print(type(("lucy"," Jack","bob")))
print(li)

li.extend({"gg","kk","hh"})
print(li)

li.extend(["mm","oo","vv"])
print(li)

运行结果:
<class 'tuple'>
['lisa', 'mary', 'lucy']
['lisa', 'mary', 'lucy', 'gg', 'kk', 'hh']
['lisa', 'mary', 'lucy', 'gg', 'kk', 'hh', 'mm', 'oo', 'vv']

5,可变类型,不可变类型,可变类型是可以在原有数据的原有地址进行修改,不可变类型类型是不可以在原有地址进行修改。可变的类型:列表,集合,字典,不可变:字符串,数字,元祖

可迭代不可迭代,可哈希不可哈希

6,删除一个数据pop,删除是有返回值的,返回值就是删除的那个元素,不指定元素位置,默认删除最后一个

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.pop(3))  # index为3的元素
print(li.pop())   #不指定默认为最后一个

运行结果:
hh
vv

7,删除另外一个函数remove,这个删除成功返回None,必须指定删除的元素,而且删除的元素列表中不存在的话,程序会崩溃,所以比较的话,还是推荐pop函数

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.remove("lisa"))
print(li)

运行结果:
None
['mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.remove("ooooooo"))
print(li)

运行结果:
Traceback (most recent call last):
  File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 54, in <module>
    print(li.remove("ooooooo"))
ValueError: list.remove(x): x not in list

8,清空列表,clear函数 清空的结果是空列表

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']

li.clear()
print(li)

 运行结果:
[]

9, 删除整个列表del函数,删除之后的结果是,列表不存在了,注意不是空列表,和clear区分

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li
print(li)

运行结果:
  File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 59, in <module>
    print(li)
NameError: name 'li' is not defined

10,del函数还可以按照切片来删除

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li[2:]
print(li)

运行结果:
['lisa', 'mary']

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li[:]
print(li)

运行结果:
[]

11,改变列表,直接赋值就可以

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[2] = "qqqq"
print(li)

运行结果:
['lisa', 'mary', 'qqqq', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']

12,也可以一下改变多个,按照切片改,注意指定数额和给的数额要一致

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq"
print(li)

运行结果:
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq"
print(li)

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq999"
print(li)

运行结果:
Traceback (most recent call last):
  File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 62, in <module>
    li[0:4:2] = "qq999"
ValueError: attempt to assign sequence of size 5 to extended slice of size 2

li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:3] = "qq999"
print(li)

运行结果:
['q', 'q', '9', '9', '9', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']

13,查找的话for...in...

14,公共方法,查找某一项出现的次数count,计算列表长度len,查找某一项对应的索引index,注意index函数,如果查找项不再列表中会崩溃

15,排序sort,默认按照首字母对应的ASCII码值来排序

li = [1,2,3,9,11,4,5,6,7,8]
li.sort()
print(li)

li.sort(reverse=True)
print(li)

运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
[11, 9, 8, 7, 6, 5, 4, 3, 2, 1]

16,字符串翻转reverse函数

li = [1,2,3,9,11,4,5,6,7,8]
li.reverse()
print(li )

运行结果:
[8, 7, 6, 5, 4, 11, 9, 3, 2, 1]

17,元祖,只读列表,可循环查询,可切片,儿子不能改,孙子可以改

tu = (1,2,3,"lisa",[1,2,3,'lucy'],'jack')
print(tu[3])
print(tu[0:2])
print("------------------")
for i in tu:
    print(i)  #这儿一开始错写成tu[i]了,注意

运行结果:
lisa
(1, 2)
------------------
1
2
3
lisa
[1, 2, 3, 'lucy']
jack

猜你喜欢

转载自www.cnblogs.com/lisa-blog/p/10018591.html