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
18,join函数,字符串以某种方式进行连接,列表转化为字符串 ,注意被join的元素必须全部由字符串组成,除了列表,元祖,set等也可以被join
s = "lisa" s1 = s.join("-") #一开始写错了,别跟我学 s1 = "-".join(s) print(s1) 运行结果: l-i-s-a li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv'] li2 ='~'.join(li) print(li2) 运行结果: lisa~mary~lucy~hh~kk~gg~mm~oo~vv li = [5, 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv'] li2 ='~'.join(li) print(li2) 运行结果: Traceback (most recent call last): File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.2_tuple.py", line 21, in <module> li2 ='~'.join(li) TypeError: sequence item 0: expected str instance, int found
19,range函数顾头不顾尾,可以截取部分例如for i in range(3,10),或者for i in range(10)
for i in range(10): print(i) for i in range(3,10): print(i) for i in range(10,5,-2): print(i) for i in range(0,10,3): print(i)
# 这句话错在哪儿?你知道吗? for i in range(0,10,-1): print(i)
20,判断是否是数字,字母
li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv'] print(li[0].isalnum())# 是否数字和字母 print(li[0].isdigit()) # 是否数字 print(li[0].isalpha()) # 是否字母 print(li[1].isalnum()) # 是否数字和字母 print(li[1].isdigit()) # 是否数字 print(li[1].isalpha()) # 是否字母 运行结果: True False False True False True
21,ASCII 英文8位,Unicode开始16位升级后32位,utf-8升级版本的Unicode,英文8位,欧洲16位,中文24位,GBK中国独有,中文16位,英文8位,所有的软件都有自己默认的编码方式可以修改,文件操作部分还会有详细总结,Python2可以通过参数指定Unicode是16位还是32位,但是Python3只可以是32位
import sys print(sys.maxunicode) #1114111代表32位,65535代表16位 运行结果: 1114111
22,计算2 + 3这种中间有空格的加法,输入后可以split之后不用strip函数去空格,直接转换成int就去掉了
23,统计一个长串字符串里面有多少位数字,可以循环然后用isdigit函数判断