zoukankan      html  css  js  c++  java
  • 基础知识拾遗--字符串&元组&列表&字典&collectons序列&集合

    ############字符串

    创建字符串

    str1 = 'abc'  
    print(str1) ##abc

    str2 = str('efg')
    print(str2) ##efg
    ######上面两种创建方法等同

    "" '' 在python中单引号和双引号效果一样
    '''
    ''' 注释
    '''
    ''' 段落

    字符串格式化
    字符串是%s ;整数是%d;浮点数%f

    print("you information: age %d,sex %s,record %0.2f"%(28,'Male',87.5))

    字符串常用功能
    移除空白 .strip() 去除前后的内容
    分割 split
    长度 len(obj)
    索引 obj[2]
    切片 obj[1:10]

    每个字符串有如下功能

     1 '''
     2 name = 'eric'
     3 result = name.capitalize()  ##首字母大写
     4 print(result)     ##  Eric
     5 '''
     6 '''
     7 name = 'eric'
     8 result = name.center(20,'*')   ###居中,并以* 填充左右。20表示宽度。填充字符加上字符串一起20个
     9 print(result)       ######********eric********
    10 '''
    11 '''
    12 name = 'sfsdfsdfsfisjfisdnisdng'
    13 result = name.count('d')  ###找子系列出现的次数
    14 result1 = name.count('s',0,2)  ###找子系列出现的次数,从第0到第2的位置.字符串的编号从0开始  范围是0<=a<2
    15 print(result)  ##4
    16 print(result1) ##1
    17 '''
    18 '''
    19 name = '李杰'
    20 result = name.encode('gbk')  ###编码变更
    21 print(result)  #b'xc0xeexbdxdc'
    22 '''
    23 '''
    24 name = 'alex'
    25 result = name.endswith('e')  ##是否是以某个子系列结尾的
    26 print(result)  #  false
    27 '''
    28 
    29 '''
    30 name = 'alex'
    31 result = name.endswith('e')  ##是否是以某个子系列结尾的
    32 result1 = name.endswith('x',0,4)  #  0<=a<3
    33 print(result)  #  false
    34 print(result1)  #  true
    35 '''
    36 
    37 '''
    38 name = 'a   lex'
    39 result = name.expandtabs()  ##tab 换成空格, 一个tab算8个空格;结果有待探讨
    40 print(result)   ###a   lex
    41 print(len(result))  ##7
    42 '''
    43 '''
    44 name = 'alex'
    45 result = name.find('a')  ##找a字符在字符串alex 在第几个位置,还可以设置起始和结束位置;找不到返回-1
    46 result1 = name.index('a')  ##找a字符在字符串alex 在第几个位置,还可以设置起始和结束位置;找不到,就程序报错
    47 print(result)   ###0
    48 print(result1)   ###0
    49 '''
    50 '''
    51 name = 'alex {0} as {1}'
    52 result = name.format('sb','eric')  ##格式化,sb 以参数的形式传到上的{0}中
    53 print(result)  ###alex sb as eric
    54 
    55 name = 'alex {name} as {id}'
    56 result = name.format(name='sb',id='eric')  ##格式化,动态传参数
    57 print(result)  ###alex sb as eric
    58 '''
    59 '''
    60 li = ['s','b','a','l','e','x']
    61 result = "".join(li)   ###将li 列表拼接
    62 result1 = "_".join(li) ##将li 以下划线拼接
    63 print(result)  ##sbalex
    64 print(result1) ##s_b_a_l_e_x
    65 '''
    66 
    67 ###ljust  rjust  ##和center类似
    68 
    69 ###lstrip  ##去掉左边
    70 
    71 ###
    72 '''
    73 name = 'alexissb'
    74 result = name.partition('is')  ##以is 做分割
    75 result1 = name.replace('a','o')  ## 做字符的替换,可以加数字,替换几个
    76 print(result)  ##('alex', 'is', 'sb')
    77 print(result1)  ##('alex', 'is', 'sb')
    78 '''
    79 
    80 ###rfind   从左往右找。凡是加r的方法,是从左往右执行
    81 ###swapcase  大小写全部转换
    82 ###titile  所有单词的 第一个字母变大写
    83 ####upper ###小写转为大写
    View Code

    ###列表

     1 '''
     2 li1 = list([1,2,3,4])
     3 print(li1)
     4 li2 = [1,2,3,4]
     5 print(li2)
     6 ###创建列表的两种方式
     7 '''
     8 
     9 '''
    10 li1 = list([1,2,3,4])
    11 li1.insert(0,'alex')  ##insert  插入;具体在哪个位置插入
    12 print(li1) ###['alex', 1, 2, 3, 4]
    13 '''
    14 '''
    15 li1 = list([1,2,3,4])
    16 li1.extend([11,22])  ##extend  扩展,自动放到最后
    17 print(li1) ##[1, 2, 3, 4, 11, 22]
    18 '''
    19 '''
    20 li1 = list([1,2,3,4,8,5])
    21 li1.append(10)  ##append  追加,在最后追加一个字符
    22 print(li1) ##[1, 2, 3, 4, 8, 5, 10]
    23 '''
    24 '''
    25 li1 = list([1,2,3,4])
    26 ret = li1.pop(0)  ##pop  pop() 具体显示去掉哪个元素;去掉的元素的值可以获取
    27 print(li1) ## [2, 3, 4]
    28 print(ret) # 1
    29 '''
    30 '''
    31 li1 = list([1,2,'a','b'])
    32 li1.remove('b')  ##去掉某个值,函数中写的具体的元素的值
    33 print(li1) ###[1, 2, 'a']
    34 '''
    35 '''
    36 li1 = list([1,2,3,4])
    37 li1.reverse()  ## 翻转
    38 print(li1) ###[4, 3, 2, 1]
    39 '''
    40 '''
    41 li1 = list([1,2,3,4,8,5])
    42 li1.sort()  ##排序
    43 print(li1) ###[1, 2, 3, 4, 5, 8]
    44 '''
    列表的内部实现代码

    ###元组

    ##元组有的功能,列表一定有,列表有的功能,元组不一定有

     1 '''
     2 tu1 = (11,22,33,44,)
     3 tu2 = tuple((11,22,33,44,))  ###接受的参数是一个序列
     4 tu3 = tuple([11,22,33,44,])
     5 li1 = [11,22,33]
     6 tu4 = tuple(li1)    ###实现列表和元组的转换
     7 
     8 print(tu1)
     9 #print(tu2)
    10 
    11 ###count
    12 ##index
    元组的内部实现代码

    ###字典

    ###字典是无序的序列
     1 '''
     2 dic1 = {'k1':'v1','k2':'v2'}
     3 dic2 = dict(k1='v1',k2='v2')
     4 
     5 print(dic1)  ##{'k2': 'v2', 'k1': 'v1'}
     6 print(dic2) ##{'k2': 'v2', 'k1': 'v1'}
     7 '''
     8 ##clear 清空所有的元素
     9 '''
    10 dic2 = dict(k1='v1',k2='v2')
    11 dic3 = dic2.fromkeys(['k1','k2','k3'],'v1') ###获取key 值,重新得到一个字典
    12 print(dic3)
    13 '''
    14 '''
    15 dic = dict(k1='v1',k2='v2')
    16 #print(dic['k1'])
    17 #print(dic['k2'])
    18 #print(dic['k3'])  ###报错 KeyError: 'k3'
    19 
    20 print(dic.get('k1'))
    21 print(dic.get('k2'))
    22 print(dic.get('k3','alex'))  ##alex, 当值不存在时,设置值为alex
    23 '''
    24 '''
    25 dic = dict(k1='v1',k2='v2')
    26 print(dic.keys())   ##获取所有的keys  dict_keys(['k1', 'k2'])
    27 print(dic.values()) ##或者所有的values dict_values(['v1', 'v2'])
    28 print(dic.items())  ##或者所有的keys和values对 dict_items([('k1', 'v1'), ('k2', 'v2')])
    29 for k in dic.keys():  ###循环获取所有的keys k1
    30     print(k)                               #k2
    31 for v in dic.values():    ###循环获取所有的values v1
    32     print(v)                                      #v2
    33 for k,v in dic.items():   ##循环获取所有的keys和values对 k1 v1
    34     print(k,v)                                        ### k2 v2
    35 '''
    36 
    37 ###pop 去掉一个
    38 '''
    39 dic = dict(k1='v1',k2='v2')
    40 print(dic.pop('k1'))  ##具体取走了什么 v1
    41 print(dic)      ###取走之后的字典结果 {'k2': 'v2'}
    42 '''
    43 '''
    44 dic = dict(k1='v1',k2='v2')
    45 print(dic.popitem())  ###r任意删除一对
    46 print(dic)
    47 '''
    48 '''
    49 dic = dict(k1='v1',k2='v2')
    50 print(dic.update({'k3':'123'}))
    51 print(dic) ### {'k2': 'v2', 'k3': '123', 'k1': 'v1'}
    52 '''
    53 '''
    字典的内部实现代码

    ###练习题

    有一个数字的集合11,22,33,44,55,66,77,88,99。
    将所有大于66的值保存到字典的第一个key中,将小于66的值保存至第二个key中
    即 {'k1':大于66,'k2’:小于66}
    实现方法一:
    将要实现的元素,拆分为最简单,一个一个实现。
    定义一个字典、定义两个列表值作为字典的values,再通过逻辑得到values的具体值

    补充的:各种集合的打印方法
     1 '''
     2 s1 = 'alexabc'
     3 for  i in s1:
     4     print(i)
     5 '''
     6 '''
     7 all_list = [11,22,33,44,55,66,77,88,99]
     8 for i in all_list:
     9     print(i)
    10 '''
    11 '''
    12 tu1 = (11,22,33)
    13 for i in tu1:
    14     print(i)
    15 '''
    16 dic1 = {'k1':'v1','k2':'v2'}
    17 for k in dic1.keys():
    18     print(k)
    19 for v in dic1.values():
    20     print(v)
    21 for k,v in dic1.items():
    22     print(k,v)
    各种集合的打印代码
    
    
     1 all_list = [11,22,33,44,55,66,77,88,99]
     2 dic = {}
     3 li1 = []
     4 li2 = []
     5 for i in all_list:
     6     if i>66:
     7         li1.append(i)
     8     else:
     9         li2.append(i)
    10 dic['k1'] = li1
    11 dic['k2'] = li2
    12 print(dic)
    View Code

    实现方法二:

    原理:定义一个字典,通过逻辑判断生成value 值。 用到了列表的追加

     1 all_list = [11,22,33,44,55,66,77,88,99]
     2 dic = {}
     3 for i in all_list:
     4     if i>66:
     5         if 'k1' in dic.keys():
     6             dic['k1'].append(i)
     7         else:
     8             dic['k1'] = [i,]
     9     else:
    10         if 'k2' in dic.keys():
    11             dic['k2'].append(i)
    12         else:
    13             dic['k2'] = [i,]
    14 print(dic)   ######{'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99]}
    python-练习

    ####集合

    set 是一个无序,并且不重复的元素集合
    类似于hash值

     1 #!/usr/bin/env python
     2 '''
     3 s1 = set()
     4 s1.add('alex')
     5 print(s1)   ###结果 {'alex'}
     6 '''
     7 ###访问速度快
     8 ###原生解决了重复问题
     9 #  ##作用之一:爬虫
    10 ##add 添加
    11 ##clear 清除元素
    12 ###copy  浅拷贝
    13 ###discard
    14 ##intersection  取交集,新创建一个set
    15 ##intersection_update 取交集,修改原来set
    16 
    17 ##isdisjoint  如果没有交集 返回true
    18 ###issubset  是否是子集
    19 ##issuperset  是否是父集
    20 
    21 ###
    22 ###union  并集
    23 ##update 更新
    24 #symmetric_difference         差集,创建新对象
    25 ##symmetric_difference_update  差集,改变原来
    26 
    27 
    28 '''
    29 s2 = set(['alex','eric','tony','alex'])
    30 print(s2)   ##{'eric', 'alex', 'tony'}
    31 ret = s2.difference(['alex','eric'])  ##生成一个新的集合
    32 print(s2)  ##{'eric', 'alex', 'tony'}   ##旧的集合不改变
    33 print(ret)  # {'tony'}
    34 '''
    35 '''
    36 s2 = set(['alex','eric','tony','alex'])
    37 print(s2)     #           {'tony', 'eric', 'alex'}
    38 ret = s2.difference_update(['alex','eric'])  ##在旧集合的基础上直接修改,得到结果。或者说删除当前set中所有包含在参数集合里的元素
    39 print(s2)   #    {'tony'}
    40 print(ret)  # None
    41 '''
    42 '''
    43 s2 = set(['alex','eric','tony','alex'])
    44 ret = s2.pop()
    45 print(s2)   ## {'alex', 'tony'}
    46 print(ret)  ## eric
    47 '''
    48 '''
    49 s2 = set(['alex','eric','tony','alex'])
    50 ret1 = s2.remove('tony')
    51 print(s2)   ## {'eric', 'alex'}
    52 print(ret1) ###  None
    53 '''
    54 ###pop() remove()执行后,旧set 都会改变。pop去掉的值会赋给新的变量。而remove不会
    55 
    56 
    57 
    58 
    59 ###数据更新
    60 '''
    61 old = set(old_dict.keys())
    62 new = set(new_dict.keys())
    63 
    64 交集
    65 update_set = old.intersection(new)
    66 
    67 差集
    68 delete_set = old.difference(new)   ###这种方法好像在数学上没有这个概念
    69 add_set = new.difference(old)
    70 上面两种实现方法和下面的实现效果一样。下面的更绕
    71 delete_set = old.symmetric_difference(update_set)  ###这种方法和数学上的并集有些不同
    72 add_set = new.symmetric_difference(update_set)
    73 '''
    74 '''
    75 s1 = set([11,22,33])
    76 s2 = set([22,44])
    77 ret1 = s1.difference(s2)
    78 ####从字面意思来看是S1集合中的元素和s2中的元素比较有哪些不同的,不同的就留下来。
    79 ret2 = s1.symmetric_difference(s2)
    80 ###从字面意思来说是对称的不同;从程序的角度来说,是s1中的元素循环和s2中元素比较,不同的留下,s2中的元素循环和s1中的元素比较,不同的留下。
    81 print(ret1)  ###结果 {33, 11}
    82 print(ret2)  ###结果 {33, 11, 44}
    83 '''
    set代码实现

    ###collections 序列

    由于之前的字典、元组、列表等或多或少存在一些缺点

    比如:

    字典是无序的
    列表的元素类型未知

    collections 序列就是为了解决上面的问题而生

    ###collections 之counter

    counter(计数器) 是对字典类型的补充,用于追踪值得出现次数
    counter 类继承dict的类(功能) ps:具备字典的所有功能 + 自己的功能

    dict 有的方法 items() keys() values()
    counter 继承了dict的类 同样有上面的方法 额外有一个方法 elements() 取所有的元素

     1 #!/usr/bin/env python
     2 import  collections
     3 obj = collections.Counter('fdsfsfsfdfsdfsvrodo')
     4 print(obj)   ########Counter({'f': 6, 's': 5, 'd': 4, 'o': 2, 'r': 1, 'v': 1})
     5 print(obj.most_common(4))   ####获取排名前4多的情况   [('f', 6), ('s', 5), ('d', 4), ('o', 2)]
     6 
     7 #for item in obj.elements(): ##所有元素
     8 #    print(item)   ###fdsfsfsfdfsdfsvrodo
     9 
    10 for k,v in obj.items():
    11     print(k,v)
    12 
    13 '''
    14 结果
    15 d 4
    16 s 5
    17 o 2
    18 r 1
    19 f 6
    20 v 1
    21 '''
    counter的实现代码
  • 相关阅读:
    vi
    head
    uniq
    sort
    所谓静态绑定
    债务
    不确
    tar
    VMWare虚拟系统上网设置 及 三种模式详解
    awk
  • 原文地址:https://www.cnblogs.com/qing-add/p/5172392.html
Copyright © 2011-2022 走看看