数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型) ,单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作,为了提升我们的开发效率, python针对这些常用的操作,为每一种数据类型内置了一系列方法。本章的主题就是带大家详细了解下它们,以及每种数据类型的详细定义、类型转换。
| |
| |
| >>> s = '123' |
| >>> res = int(s) |
| >>> res,type(res) |
| (123, <class 'int'>) |
| |
| >>> int('12.3') # 错误演示:字符串内包含了非整数符号. |
| Traceback (most recent call last): |
| File "<stdin>", line 1, in <module> |
| ValueError: invalid literal for int() with base 10: '12.3' |
| |
| |
| |
| >>> bin(3) |
| '0b11' |
| >>> oct(9) |
| '0o11' |
| >>> hex(17) |
| '0x11' |
| |
| >>> int('0b11',2) |
| 3 |
| >>> int('0o11',8) |
| 9 |
| >>> int('0x11',16) |
| 17 |
| |
| |
| >>> s = '12.3' |
| >>> res=float(s) |
| >>> res,type(res) |
| (12.3, <class 'float'>) |
数字类型主要就是用来做数学运算与比较运算,因此数字类型除了与运算符结合使用之外,并无需要掌握的内置方法
| |
| name1 = 'jason' |
| name2 = "lili" |
| name3 = """ricky""" |
| |
| >>> type(str([1,2,3])) |
| <class 'str'> |
| >>> type(str({"name":"jason","age":18})) # dict->str |
| <class 'str'> |
| >>> type(str((1,2,3))) # tuple->str |
| <class 'str'> |
| >>> type(str({1,2,3,4})) # set->str |
| <class 'str'> |
| >>> str1 = 'hello python!' |
| |
| |
| |
| >>> str1[6] |
| p |
| |
| >>> str1[-4] |
| h |
| |
| >>> str1[0]='H' |
| |
| |
| |
| >>> str1[0:9] |
| hello pyt |
| |
| >>> str1[0:9:2] |
| hlopt |
| |
| >>> str1[::-1] |
| !nohtyp olleh |
| |
| |
| |
| >>> len(str1) |
| 13 |
| |
| |
| |
| >>> 'hello' in str1 |
| True |
| |
| >>> 'tony' not in str1 |
| True |
| |
| |
| |
| >>> str1 = ' life is short! ' |
| >>> str1.strip() |
| life is short! |
| |
| |
| >>> str2 = '**tony**' |
| >>> str2.strip('*') |
| tony |
| |
| |
| |
| >>> str3='hello world' |
| >>> str3.split() |
| ['hello', 'world'] |
| |
| >>> str4 = '127.0.0.1' |
| >>> str4.split('.') |
| ['127', '0', '0', '1'] |
| |
| |
| >>> str5 = '今天你好吗?' |
| >>> for line in str5: |
| ... print(line) |
| ... |
| 今 |
| 天 |
| 你 |
| 好 |
| 吗 |
| ? |
1.strip, lstrip, rstrip
| >>> str1 = '**tony***' |
| |
| >>> str1.strip('*') |
| 'tony' |
| >>> str1.lstrip('*') |
| tony*** |
| >>> str1.rstrip('*') |
| **tony |
2.lower(),upper()
| >>> str2 = 'My nAme is tonY!' |
| |
| >>> str2.lower() |
| my name is tony! |
| >>> str2.upper() |
| MY NAME IS TONY! |
3.startswith,endswith
| >>> str3 = 'tony jam' |
| |
| |
| >>> str3.startswith('t') |
| True |
| >>> str3.startswith('j') |
| False |
| |
| >>> str3.endswith('jam') |
| True |
| >>> str3.endswith('tony') |
| False |
4.格式化输出之format
之前我们使用%s来做字符串的格式化输出操作,在传值时,必须严格按照位置与%s一一对应,而字符串的内置方法format则提供了一种不依赖位置的传值方式
案例:
| |
| >>> str4 = 'my name is {name}, my age is {age}!'.format(age=18,name='tony') |
| >>> str4 |
| 'my name is tony, my age is 18!' |
| |
| >>> str4 = 'my name is {name}{name}{name}, my age is {name}!'.format(name='tony', age=18) |
| >>> str4 |
| 'my name is tonytonytony, my age is tony!' |
format的其他使用方式(了解)
| |
| >>> str4 = 'my name is {}, my age is {}!'.format('tony', 18) |
| >>> str4 |
| my name is tony, my age is 18! |
| |
| >>> str4 = 'my name is {0}, my age is {1}!'.format('tony', 18) |
| >>> str4 |
| my name is tony, my age is 18! |
| |
| >>> str4 = 'my name is {1}, my age is {0}!'.format('tony', 18) |
| >>> str4 |
| my name is 18, my age is tony! |
| |
| >>> str4 = 'my name is {1}, my age is {1}!'.format('tony', 18) |
| >>> str4 |
| my name is 18, my age is 18! |
5.split,rsplit
| |
| >>> str5='C:/a/b/c/d.txt' |
| >>> str5.split('/',1) |
| ['C:', 'a/b/c/d.txt'] |
| |
| |
| >>> str5='a|b|c' |
| >>> str5.rsplit('|',1) |
| ['a|b', 'c'] |
6.join
| |
| >>> '%'.join('hello') |
| 'h%e%l%l%o' |
| >>> '|'.join(['tony','18','read']) |
| 'tony|18|read' |
7.replace
| |
| >>> str7 = 'my name is tony, my age is 18!' |
| >>> str7 = str7.replace('18', '73') |
| >>> str7 |
| my name is tony, my age is 73! |
| |
| |
| >>> str7 = 'my name is tony, my age is 18!' |
| >>> str7 = str7.replace('my', 'MY',1) |
| >>> str7 |
| 'MY name is tony, my age is 18!' |
8.isdigit
| |
| >>> str8 = '5201314' |
| >>> str8.isdigit() |
| True |
| |
| >>> str8 = '123g123' |
| >>> str8.isdigit() |
| False |

| |
| |
| >>> msg='tony say hello' |
| >>> msg.find('o',1,3) |
| 1 |
| |
| >>> msg.index('e',2,4) |
| |
| |
| >>> msg = "hello everyone" |
| >>> msg.count('e') |
| 4 |
| >>> msg.count('e',1,6) |
| 1 |
| |
| |
| >>> name='tony' |
| >>> name.center(30,'-') |
| -------------tony------------- |
| >>> name.ljust(30,'*') |
| tony************************** |
| >>> name.rjust(30,'*') |
| **************************tony |
| >>> name.zfill(50) |
| 0000000000000000000000000000000000000000000000tony |
| |
| |
| >>> name = 'tony\thello' |
| >>> name |
| tony hello |
| >>> name.expandtabs(1) |
| tony hello |
| |
| |
| |
| >>> message = 'hello everyone nice to meet you!' |
| >>> message.capitalize() |
| Hello everyone nice to meet you! |
| |
| >>> message1 = 'Hi girl, I want make friends with you!' |
| >>> message1.swapcase() |
| hI GIRL, i WANT MAKE FRIENDS WITH YOU! |
| |
| >>> msg = 'dear my friend i miss you very much' |
| >>> msg.title() |
| Dear My Friend I Miss You Very Much |
| |
| |
| |
| num1 = b'4' |
| num2 = u'4' |
| num3 = '四' |
| num4 = 'Ⅳ' |
| |
| |
| >>> num1.isdigit() |
| True |
| >>> num2.isdigit() |
| True |
| >>> num3.isdigit() |
| False |
| >>> num4.isdigit() |
| False |
| |
| |
| >>> num2.isdecimal() |
| True |
| >>> num3.isdecimal() |
| False |
| >>> num4.isdecimal() |
| False |
| |
| |
| >>> num2.isnumeric() |
| True |
| >>> num3.isnumeric() |
| True |
| >>> num4.isnumeric() |
| True |
| |
| |
| >>> num5 = '4.3' |
| >>> num5.isdigit() |
| False |
| >>> num5.isdecimal() |
| False |
| >>> num5.isnumeric() |
| False |
| |
| ''' |
| 总结: |
| 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 |
| 如果要判断中文数字或罗马数字,则需要用到isnumeric。 |
| ''' |
| |
| |
| >>> name = 'tony123' |
| >>> name.isalnum() |
| True |
| >>> name.isalpha() |
| False |
| >>> name.isidentifier() |
| True |
| >>> name.islower() |
| True |
| >>> name.isupper() |
| False |
| >>> name.isspace() |
| False |
| >>> name.istitle() |
| False |
| |
| >>> list('wdad') |
| >>> list([1,2,3]) |
| >>> list({"name":"jason","age":18}) |
| >>> list((1,2,3)) |
| >>> list({1,2,3,4}) |

| |
| |
| >>> my_friends=['tony','jason','tom',4,5] |
| >>> my_friends[0] |
| tony |
| |
| >>> my_friends[-1] |
| 5 |
| |
| >>> my_friends = ['tony','jack','jason',4,5] |
| >>> my_friends[1] = 'martthow' |
| >>> my_friends |
| ['tony', 'martthow', 'jason', 4, 5] |
| |
| |
| |
| >>> my_friends[0:4] |
| ['tony', 'jason', 'tom', 4] |
| |
| >>> my_friends[0:4:2] |
| ['tony', 'tom'] |
| |
| |
| >>> len(my_friends) |
| 5 |
| |
| |
| >>> 'tony' in my_friends |
| True |
| >>> 'xxx' not in my_friends |
| True |
| |
| |
| |
| >>> l1 = ['a','b','c'] |
| >>> l1.append('d') |
| >>> l1 |
| ['a', 'b', 'c', 'd'] |
| |
| |
| >>> l1.extend(['a','b','c']) |
| >>> l1 |
| ['a', 'b', 'c', 'd', 'a', 'b', 'c'] |
| |
| |
| >>> l1.insert(0,"first") |
| >>> l1 |
| ['first', 'a', 'b', 'c', 'alisa', 'a', 'b', 'c'] |
| |
| |
| |
| >>> l = [11,22,33,44] |
| >>> del l[2] |
| >>> l |
| [11,22,44] |
| |
| |
| >>> l = [11,22,33,22,44] |
| >>> res=l.pop() |
| >>> res |
| 44 |
| >>> res=l.pop(1) |
| >>> res |
| 22 |
| |
| |
| >>> l = [11,22,33,22,44] |
| >>> res=l.remove(22) |
| >>> print(res) |
| None |
| |
| |
| >>> l = [11,22,33,44] |
| >>> l.reverse() |
| >>> l |
| [44,33,22,11] |
| |
| |
| |
| >>> l = [11,22,3,42,7,55] |
| >>> l.sort() |
| >>> l |
| [3, 7, 11, 22, 42, 55] |
| >>> l = [11,22,3,42,7,55] |
| >>> l.sort(reverse=True) |
| >>> l |
| [55, 42, 22, 11, 7, 3] |
| |
| |
| >>> l1=[1,2,3] |
| >>> l2=[2,] |
| >>> l2 > l1 |
| True |
| |
| >>> s1='abc' |
| >>> s2='az' |
| >>> s2 > s1 |
| True |
| |
| >>> l = ['A','z','adjk','hello','hea'] |
| >>> l.sort() |
| >>> l |
| ['A', 'adjk', 'hea', 'hello','z'] |
| |
| |
| |
| for line in my_friends: |
| print(line) |
| 'tony' |
| 'jack' |
| 'jason' |
| 4 |
| 5 |

| >>> l=[1,2,3,4,5,6] |
| >>> l[0:3:1] |
| [1, 2, 3] |
| >>> l[2::-1] |
| [3, 2, 1] |
| |
| |
| >>> l[::-1] |
| [6, 5, 4, 3, 2, 1] |
元组与列表类似,也是可以存多个任意类型的元素,不同之处在于元组的元素不能修改,即元组相当于不可变的列表,用于记录多个固定不允许修改的值,单纯用于取
| |
| >>> countries = ("中国","美国","英国") |
| |
| >>> countries = ("中国",) |
| |
| >>> tuple('wdad') |
| >>> tuple([1,2,3]) |
| >>> tuple({"name":"jason","age":18}) |
| >>> tuple((1,2,3)) |
| >>> tuple({1,2,3,4}) |
| |
| >>> tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33) |
| |
| >>> tuple1[0] |
| 1 |
| >>> tuple1[-2] |
| 22 |
| >>> tuple1[0] = 'hehe' |
| |
| |
| >>> tuple1[0:6:2] |
| (1, 15000.0, 22) |
| |
| |
| >>> len(tuple1) |
| 6 |
| |
| |
| >>> 'hhaha' in tuple1 |
| True |
| >>> 'hhaha' not in tuple1 |
| False |
| |
| |
| >>> for line in tuple1: |
| ... print(line) |
| 1 |
| hhaha |
| 15000.0 |
| 11 |
| 22 |
| 33 |
| |
| info={'name':'tony','age':18,'sex':'male'} |
| |
| info=dict(name='tony',age=18,sex='male') |
| |
| >>> info=dict([['name','tony'],('age',18)]) |
| >>> info |
| {'age': 18, 'name': 'tony'} |
| |
| |
| >>> {}.fromkeys(('name','age','sex'),None) |
| {'age': None, 'sex': None, 'name': None} |

| |
| |
| >>> dic = { |
| ... 'name': 'xxx', |
| ... 'age': 18, |
| ... 'hobbies': ['play game', 'basketball'] |
| ... } |
| >>> dic['name'] |
| 'xxx' |
| >>> dic['hobbies'][1] |
| 'basketball' |
| |
| >>> dic['gender'] = 'male' |
| >>> dic |
| {'name': 'tony', 'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'} |
| |
| >>> dic['name'] = 'tony' |
| >>> dic |
| {'name': 'tony', 'age': 18, 'hobbies': ['play game', 'basketball']} |
| |
| |
| >>> len(dic) |
| 3 |
| |
| |
| >>> 'name' in dic |
| True |
| |
| |
| >>> dic.pop('name') |
| >>> dic |
| {'age': 18, 'hobbies': ['play game', 'basketball']} |
| |
| |
| >>> dic = {'age': 18, 'hobbies': ['play game', 'basketball'], 'name': 'xxx'} |
| |
| >>> dic.keys() |
| dict_keys(['name', 'age', 'hobbies']) |
| |
| >>> dic.values() |
| dict_values(['xxx', 18, ['play game', 'basketball']]) |
| |
| >>> dic.items() |
| dict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])]) |
| |
| |
| |
| >>> for key in dic: |
| ... print(key) |
| ... |
| age |
| hobbies |
| name |
| |
| >>> for key in dic.keys(): |
| ... print(key) |
| ... |
| age |
| hobbies |
| name |
| |
| >>> for key in dic.values(): |
| ... print(key) |
| ... |
| 18 |
| ['play game', 'basketball'] |
| xxx |
| |
| >>> for key in dic.items(): |
| ... print(key) |
| ... |
| ('age', 18) |
| ('hobbies', ['play game', 'basketball']) |
| ('name', 'xxx') |

1.get()
| >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'} |
| >>> dic.get('k1') |
| 'jason' |
| >>> res=dic.get('xxx') |
| >>> print(res) |
| None |
| >>> res=dic.get('xxx',666) |
| >>> print(res) |
| 666 |
| |
2.pop()
| >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'} |
| >>> v = dic.pop('k2') |
| >>> dic |
| {'k1': 'jason', 'kk2': 'JY'} |
| >>> v |
| 'Tony' |
3.popitem()
| >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'} |
| >>> item = dic.popitem() |
| >>> dic |
| {'k3': 'JY', 'k2': 'Tony'} |
| >>> item |
| ('k1', 'jason') |
4.update()
| |
| >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'} |
| >>> dic.update({'k1':'JN','k4':'xxx'}) |
| >>> dic |
| {'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'} |
5.fromkeys()
| >>> dic = dict.fromkeys(['k1','k2','k3'],[]) |
| >>> dic |
| {'k1': [], 'k2': [], 'k3': []} |
6.setdefault()
| |
| >>> dic={'k1':111,'k2':222} |
| >>> res=dic.setdefault('k3',333) |
| >>> res |
| 333 |
| >>> dic |
| {'k1': 111, 'k3': 333, 'k2': 222} |
| |
| |
| >>> dic={'k1':111,'k2':222} |
| >>> res=dic.setdefault('k1',666) |
| >>> res |
| 111 |
| >>> dic |
| {'k1': 111, 'k2': 222} |
集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算
| """ |
| 定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点: |
| 1:每个元素必须是不可变类型 |
| 2:集合内没有重复的元素 |
| 3:集合内元素无序 |
| """ |
| s = {1,2,3,4} |
| |
| |
| |
| |
| d = {} |
| s = set() |
| |
| >>> s = set([1,2,3,4]) |
| >>> s1 = set((1,2,3,4)) |
| >>> s2 = set({'name':'jason',}) |
| >>> s3 = set('egon') |
| >>> s,s1,s2,s3 |
| {1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'} |
我们定义两个集合friends与friends2来分别存放两个人的好友名字,然后以这两个集合为例讲解集合的关系运算
| >>> friends1 = {"zero","kevin","jason","egon"} |
| >>> friends2 = {"Jy","ricky","jason","egon"} |
两个集合的关系如下图所示
| |
| |
| >>> friends1 | friends2 |
| {'kevin', 'ricky', 'zero', 'jason', 'Jy', 'egon'} |
| |
| |
| >>> friends1 & friends2 |
| {'jason', 'egon'} |
| |
| |
| >>> friends1 - friends2 |
| {'kevin', 'zero'} |
| >>> friends2 - friends1 |
| {'ricky', 'Jy'} |
| |
| |
| >>> friends1 ^ friends2 |
| {'kevin', 'zero', 'ricky', 'Jy'} |
| |
| |
| >>> friends1 == friends2 |
| False |
| |
| |
| |
| >>> {1,2,3} > {1,2} |
| True |
| >>> {1,2,3} >= {1,2} |
| True |
| |
| >>> {1,2,3} > {1,3,4,5} |
| False |
| >>> {1,2,3} >= {1,3,4,5} |
| False |
| |
| |
| >>> {1,2} < {1,2,3} |
| True |
| >>> {1,2} <= {1,2,3} |
| True |
集合去重复有局限性
示例如下
| >>> l=['a','b',1,'a','a'] |
| >>> s=set(l) |
| >>> s |
| {'b', 'a', 1} |
| >>> l_new=list(s) |
| >>> l_new |
| ['b', 'a', 1] |
| |
| |
| l=[ |
| {'name':'lili','age':18,'sex':'male'}, |
| {'name':'jack','age':73,'sex':'male'}, |
| {'name':'tom','age':20,'sex':'female'}, |
| {'name':'lili','age':18,'sex':'male'}, |
| {'name':'lili','age':18,'sex':'male'}, |
| ] |
| |
| new_l=[] |
| |
| for dic in l: |
| if dic not in new_l: |
| new_l.append(dic) |
| |
| print(new_l) |
| |
| [ |
| {'age': 18, 'sex': 'male', 'name': 'lili'}, |
| {'age': 73, 'sex': 'male', 'name': 'jack'}, |
| {'age': 20, 'sex': 'female', 'name': 'tom'} |
| ] |
| |
| >>> s={'a','b','c'} |
| >>> len(s) |
| 3 |
| |
| |
| >>> 'c' in s |
| True |
| |
| |
| >>> for item in s: |
| ... print(item) |
| ... |
| c |
| a |
| b |
| """ |
| 一.关系运算 |
| 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 |
| pythons={'jason','egon','kevin','ricky','gangdan','biubiu'} |
| linuxs={'kermit','tony','gangdan'} |
| 1. 求出即报名python又报名linux课程的学员名字集合 |
| 2. 求出所有报名的学生名字集合 |
| 3. 求出只报名python课程的学员名字 |
| 4. 求出没有同时这两门课程的学员名字集合 |
| """ |
| |
| >>> pythons & linuxs |
| |
| >>> pythons | linuxs |
| |
| >>> pythons - linuxs |
| |
| >>> pythons ^ linuxs |
可变数据类型:值发生改变时,内存地址不变,即id不变,证明在改变原值
不可变类型:值发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,是产生了新的值
数字类型:
| >>> x = 10 |
| >>> id(x) |
| 1830448896 |
| >>> x = 20 |
| >>> id(x) |
| 1830448928 |
| |
字符串
| >>> x = "Jy" |
| >>> id(x) |
| 938809263920 |
| >>> x = "Ricky" |
| >>> id(x) |
| 938809264088 |
| |
列表
| >>> list1 = ['tom','jack','egon'] |
| >>> id(list1) |
| 486316639176 |
| >>> list1[2] = 'kevin' |
| >>> id(list1) |
| 486316639176 |
| >>> list1.append('lili') |
| >>> id(list1) |
| 486316639176 |
| |
元组
| >>> t1 = ("tom","jack",[1,2]) |
| >>> t1[0]='TOM' |
| >>> t1.append('lili') |
| |
| >>> t1 = ("tom","jack",[1,2]) |
| >>> id(t1[0]),id(t1[1]),id(t1[2]) |
| (4327403152, 4327403072, 4327422472) |
| >>> t1[2][0]=111 |
| >>> t1 |
| ('tom', 'jack', [111, 2]) |
| >>> id(t1[0]),id(t1[1]),id(t1[2]) |
| (4327403152, 4327403072, 4327422472) |
字典
| >>> dic = {'name':'egon','sex':'male','age':18} |
| >>> |
| >>> id(dic) |
| 4327423112 |
| >>> dic['age']=19 |
| >>> dic |
| {'age': 19, 'sex': 'male', 'name': 'egon'} |
| >>> id(dic) |
| 4327423112 |
| |
| name = " alegonxX" |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| name=' alegonxX' |
| |
| 1) print(name.strip()) |
| 2) print(name.startswith('al')) |
| 3) print(name.endswith('X')) |
| 4) print(name.replace('l','p')) |
| 5) print(name.split('l')) |
| 6) print(name.upper()) |
| 7) print(name.lower()) |
| 8) print(name[1]) |
| 9) print(name[0:3]) |
| 10) print(name[-1:-3:-1]) |
| 11) print(name.find('e')) |
| 12) name='egonlin' |
| print(name[:-1]) |
| |
| |
| |
| msg_dic = { |
| 'apple': 10, |
| 'tesla': 100000, |
| 'mac': 3000, |
| 'lenovo': 30000, |
| 'chicken': 10, |
| } |
| |
| |
| msg_dic={ |
| 'apple':10, |
| 'tesla':100000, |
| 'mac':3000, |
| 'lenovo':30000, |
| 'chicken':10, |
| } |
| goods_l=[] |
| while True: |
| for key,item in msg_dic.items(): |
| print('name:{name} price:{price}'.format(price=item,name=key)) |
| choice=input('商品>>: ').strip() |
| if not choice or choice not in msg_dic:continue |
| count=input('购买个数>>: ').strip() |
| if not count.isdigit():continue |
| goods_l.append((choice,msg_dic[choice],count)) |
| |
| print(goods_l) |
| 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 |
| |
| 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值} |
| |
| #答案 |
| a={'k1':[],'k2':[]} |
| c=[11,22,33,44,55,66,77,88,99,90] |
| for i in c: |
| if i>66: |
| a['k1'].append(i) |
| else: |
| a['k2'].append(i) |
| print(a) |
| 统计s="hello egon egon say hello xxx xxx"中每个单词的个数 |
| |
| |
| |
| |
| s="hello egon egon say hello xxx xxx" |
| dic={} |
| words=s.split() |
| print(words) |
| for word in words: |
| dic[word]=s.count(word) |
| print(dic) |
| |
| |
| s="hello egon egon say hello xxx xxx" |
| dic={} |
| words=s.split() |
| for word in words: |
| dic.setdefault(word,s.count(word)) |
| print(dic) |
| |
| |
| s="hello egon egon say hello xxx xxx" |
| dic={} |
| words=s.split() |
| words_set=set(words) |
| for word in words_set: |
| dic[word]=s.count(word) |
| print(dic) |
| 关系运算 |
| 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 |
| pythons={'xiaohua','egon','mimi','gangdan','biubiu'} |
| linuxs={'mimi','xiaohei','gangdan'} |
| 1. 求出即报名python又报名linux课程的学员名字集合 |
| 2. 求出所有报名的学生名字集合 |
| 3. 求出只报名python课程的学员名字 |
| 4. 求出没有同时这两门课程的学员名字集合 |
| |
| |
| |
| print(pythons & linuxs) |
| |
| print(pythons | linuxs) |
| |
| print(pythons - linuxs) |
| |
| print(pythons ^ linuxs) |
| 去重 |
| |
| 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序 |
| |
| 2.在上题的基础上,保存列表原来的顺序 |
| |
| 3.去除文件中重复的行,肯定要保持文件内容的顺序不变 |
| 4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序 |
| |
| l=[ |
| {'name':'egon','age':18,'sex':'male'}, |
| {'name':'alex','age':73,'sex':'male'}, |
| {'name':'egon','age':20,'sex':'female'}, |
| {'name':'egon','age':18,'sex':'male'}, |
| {'name':'egon','age':18,'sex':'male'}, |
| ] |
| |
| |
| |
| l=['a','b',1,'a','a'] |
| print(set(l)) |
| |
| |
| |
| l=[1,'a','b',1,'a'] |
| |
| l1=[] |
| for i in l: |
| if i not in l1: |
| l1.append(i) |
| print(l1) |
| |
| l1=[] |
| s=set() |
| for i in l: |
| if i not in s: |
| s.add(i) |
| l1.append(i) |
| |
| print(l1) |
| |
| |
| import os |
| with open('db.txt','r',encoding='utf-8') as read_f,\ |
| open('.db.txt.swap','w',encoding='utf-8') as write_f: |
| s=set() |
| for line in read_f: |
| if line not in s: |
| s.add(line) |
| write_f.write(line) |
| os.remove('db.txt') |
| os.rename('.db.txt.swap','db.txt') |
| |
| |
| l=[ |
| {'name':'egon','age':18,'sex':'male'}, |
| {'name':'alex','age':73,'sex':'male'}, |
| {'name':'egon','age':20,'sex':'female'}, |
| {'name':'egon','age':18,'sex':'male'}, |
| {'name':'egon','age':18,'sex':'male'}, |
| ] |
| |
| s=set() |
| l1=[] |
| for item in l: |
| val=(item['name'],item['age'],item['sex']) |
| if val not in s: |
| s.add(val) |
| l1.append(item) |
| |
| print(l1) |
| |
| |
| def func(items,key=None): |
| s=set() |
| for item in items: |
| val=item if key is None else key(item) |
| if val not in s: |
| s.add(val) |
| yield item |
| |
| print(list(func(l,key=lambda dic:(dic['name'],dic['age'],dic['sex'])))) |