美文网首页
python基础

python基础

作者: 沙砾丶ye | 来源:发表于2020-01-02 20:38 被阅读0次

    字符串

    创建

    s1 = 'lenovo'
    s2 = "XC "
    

    拼接

    print('hello' + 'lenovo')
    

    不可以用 字符串和 一个非字符串类型的对象相加

    • 复制
    print('*' * 20)
    print('lenovo 666' * 20)
    

    字符串 和 0 或者 负数相乘,会得到一个空字符串

    获取字符串的长度,包含空格和换行符

    n = len(s1)
    print(n)
    

    利用字符串对象的方法

    split 分割
    默认使用 空格或者 Tab 间做为分隔符

    > url = 'www.baidu.com 百度官网'
    > url.split()
    ['www.baidu.com', '百度官网']
    

    可以指定分隔符

    > ip = '192.168.1.100'
    > ip.split('.')
    ['192', '168', '1', '100']
    

    rsplit 从右向左分割

    找到第一个分隔符,就结束。

    > ip.rsplit('.', 1)
    ['192.168.1', '100']
    >
    

    replace 替换

    >url = 'www.baidu.com'
    >url.replace('.', '_')
    www-baidu-com
    

    strip 移除字符串两端的空白字符

    > s = ' shark '
    > s
    ' shark '
    >>> s.strip()
    'shark'
    
    s="symbol=BCHBTC;baseCoin=BCH;quoteCoin=BTC;"
    
    s_list = s.split(';')
    # print(s_list)
    # ['symbol=BCHBTC', 'baseCoin=BCH', 'quoteCoin=BTC', '']
    

    startswith 判断字符串以什么为开头

    s = 'hello world'
    if s.startswith('h'):
        print(s)
    

    endswith 判断字符串以什么为结尾

    s = 'hello world'
    if s.endswith('d'):
        print(s)
    

    index 获取一个元素在字符串中的索引号

    s = 'hello world'
    idx = s.index('l')
    

    列表

    创建列表

    > li = []
    > l2 = [1,2,'biadu']
    list 从其他类型转换
    list('hello')
    ['h','e','l','l','o']
    

    嵌套的列表
    列表中可包含 python 中任何类型的元素(对象),当然也可以包括一个或多个列表

    li = [['one', 'two', 'three'], [1, 2, 3]]
    

    列表的基本操作

    取值

    li_f = [ 'insert', 'append','extend', 'remove', 'pop', 'sort', 'sorted']
    
    li_f[0]   # insert
    

    嵌套的列表

    l2 = [['one', 'two', 'three'], [1, 2, 3]]
    l2[0][1] 
      two
    

    切片

    同字符串的切片一样

    li_f = [ 'insert', 'append','extend', 'remove', 'pop', 'sort', 'sorted']
    
    # 获取全部元素
    li_f[:]
    
    # 反转
    li_f[::-1]
    

    列表操作

    len()
    方法是一个内置函数,可以统计序列类型的数据结构的长度。

    li = [5, 4, 3, 2, 1, 0]
    n = len(li)
    print(n)
    

    in
    判断元素是否存在于列表中

    li = [5, 4, 3, 2, 1, 0]
    if 5 in li:
         print('存在')
    

    append()
    向列表的最后位置,添加一个元素,只接收一个参数。

    li.append('a')
    print(li)
    

    insert()
    向原列表的指定位置插入一个元素,接收两个参数,
    第一个是索引号,第二个是要插入的元素。

    li.insert(0, 'b')
    print(li)
    

    extend()
    可以把一个序列类型中的每个元素追加到原列表中,接收的参数是一个序列类型的数据(字符串,列表)。

    l2 = ['qf','yangge']
    li.extend(l2)
    print(li)
    

    remove()
    移除列表中某个指定的元素,没有返回值,并且假如有多个相同值的元素存在,每次只会移除排在最前面的那个元素

    obj.remove('a') 。
    

    pop()
    从原列表中删除一个元素,并且把这个元素返回。
    接收零个或一个参数,参数是偏移量,int 类型。

    # 删除列表中的最后一个元素
    li.pop() 
    
     # 删除列表中第二个索引号对应的元素,并且返回这个元素,用变量名`n` 接收。  
    n = li.pop(2)   
    

    **''.join() **
    把列表中的元素拼接起来,返回的是字符串类型

    l7 = ['a','b']
    s = ''.join(l7)
    print(s)
    
    # 输出
    'ab'
    

    还可以以指定的字符进行拼接

    l7 = ['a','b']
    s = '-'.join(l7)
    print(s)
    
    # 输出
    'a-b'
    

    index()
    返回指定元素的索引号。

    idx = li.index(4) 
    print(idx)
    

    字典

    高效创建字典
    空字典

    In [7]: d1 = {}
    
    In [8]: type(d1)
    Out[8]: dict
    

    字典中元素是无序的

    In [1]: d2 = {'shark': '鲨鱼', 'qf': '千锋'}
    
    In [2]: d2
    Out[2]: {'qf': '千锋', 'shark': '鲨鱼'}
    

    dict() 转换为字典

    接收一个序列类型的参数,这个序列类型中的每个元素必须是成对儿出现的。

    In [14]: d_tpl = [('a','1'),('b','2'),('c','3')]  
    
    In [15]: dict3 = dict(d_tpl)
    
    In [17]: d_tpl2 = ['a1','b2','c3']
    
    In [18]: dict4 = dict(d_tpl2)
    
    In [21]: dict3 is dict4  
    Out[21]: False  
    
    In [22]: dict3 == dict4  
    Out[22]: True
    

    zip() 并行迭代

    ​ zip() 函数可以对多个序列进行并行迭代
    
    en =['a', 'b', 'c', 'd']
    
    nums = ['1', '2', '3', '4']
    
    for word, num in zip(en, nums):
        print(word, num)
    

    利用 zip() 函数可以对具有相同数量的元素的序列进行配对,返回的值不是元组,也不是列表,而是一个整合在一起的可迭代变量。

    In [36]: en = 'a','b','c',
    
    In [37]: nums = '1' , '2', '3'
    
    In [38]: zip(en, nums)
    Out[38]: <zip at 0x1052c7f08>
    
    In [39]: type(zip(en, nums))
    Out[39]: zip
    
    In [40]: list(zip(en, nums))
    Out[40]: [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
        
    In [41]: dict(zip(en, nums))
    Out[41]: {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
    

    获取 key 对应的 value

    dict_obj = {'a': 1, 'b': 2}
    dict_obj['a']        # key 必须存在,不存在,抛出异常    
    
    dict_obj.get('a')    # 获取到 'a' 对应的值(value)
    
    dict_obj.get('c')    # key 不存在字典中,则返回 None
    
    dict_obj.get('c', '5')  # key 不存在,返回指定的 value
    
    

    示例

    info_dict = {"name": 'yangge', 'age': 18}
    na = info_dict['name']
    print(na)
    
    naa = info_dict['dd']
    
    age = info_dict.get('age')
    print(age)
    
    age2 = info_dict.get('asdf')
    print(type(age2),age2)
    
    age3 = info_dict.get('adaf', '')
    print(type(age3),age3)
    
    age4 = info_dict.get('adaf', 28)
    print(type(age4),age4)
    

    获取字典所有的 key

    dict_obj.keys()

    info_dict = {"name": 'yangge', 'age': 18}
    d_keys = info_dict.keys()
    print(d_keys)
    print(list(d_keys))
    

    获取字典所有的 value

    dict_obj.values()

    info_dict = {"name": 'yangge', 'age': 18}
    d_vals = info_dict.values()
    print(d_vals)
    print(list(d_vals))
    

    同时获取字典的 key 和 value

    dict_obj.items()

    info_dict = {"name": 'yangge', 'age': 18}
    item = info_dict.items()
    print(item)
    print(list(item))
    

    使用 update() 更新字典

    把一个已经存在的字典中的键值对,添加到另一个字典中。

    In [59]: d5
    Out[59]: {'a': 1, 'b': 2, 'li': [1, 3, 5]}
    
    In [60]: d6 = {'a': 2,'d': 2,'e': 5}
    
    In [61]: d5.update(d6)
    
    In [62]: d5
    Out[62]: {'a': 2, 'b': 2, 'd': 2, 'e': 5, 'li': [1, 3, 5]}
    

    注意: 更新时,相同的 key ,它的值会被新的值替代,这个特性同样适用与 = 号方式的更新.

    成员判断

    in

    In [63]: 'a' in d5   # 默认就是判断 'a' 是否存在于字典中的 keys()
    Out[63]: True
    
    In [63]: 'a' in d5.keys()
    Out[63]: True
    
    In [75]: 'a' not in d5.keys()
    Out[75]: False
    

    pop()
    从字典中删除指定 key 的键值对,并返回这个 key 对应的值

    In [49]: d6 = {'b': 2, 'c': '3', 'd': 'new key', 'li': [1, 3, 5]}
    
    In [50]: li = d6.pop('li')
        
    In [51]: print(li)
    Out [51]: [1, 3, 5]
    

    popitem()
    删除字典中的键值对,并返回这个键和值

    
    item = d6.popitem()
    
    print(item)
    print(d6)
    
    """
    ('li', [1, 3, 5])
    {'b': 2, 'c': '3', 'd': 'new key'}
    """
    

    用字典实现 switch … case 语句

    Python 中没有 switch … case 语句,这个问题Python之父龟叔表示这个语法过去没有,现在没有,以后也不会有。因为Python简洁的语法完全可以用 if … elif 实现。如果有太多的分支判断,还可以使用字典来代替。

    hile True:
    
        arg = input(">>:")
    
        if arg == '0':
            print('zero')
        elif arg == '1':
            print('one')
        elif arg == '2':
            print("two")
        else:
            print("nothing")
    

    python 建议使用下面的代码实现

    data = {
        "0": "zero",
        "1": "one",
        "2": "two",
    }
    
    while True:
    
        arg = input(">>:")
    
        v = data.get(arg, 'nothing')
        print(v)
    

    setdefault 处理缺失的键

    dict_obj.setdefatult(‘key’, ‘value’)
    
    1. key 不存在,添加 key: value 到字典中,并且返回字典中的 value 对象,也就是说返回的 value 和刚添加到字典中的 value 是同一个对象 ;
    2. key 存在, 返回对应的 value,原字典不变

    分类统计实例

    data = [
            ("ip", "192.168.1.100"),
            ("ip", "192.168.1.200"),
            ("port", 22),
            ("user", "yangge"),
            ("user", "shark")
        ]
    

    bad

    groups = {}
    for key, val in data:
        # 判断 key 是否在于字典中
        if key not in groups.keys():
            # key 不存在字典中,把键值对添加到此字典中
            # 此时,key 对应的值是一个列表类型,这个类别包含了循环的  val
            groups[key] = [val]
        else:
            # key 存在字典中,则把 val 添加到 key 对应的值中
            # 这值是一个列表。
            groups[key].append(val)
    

    good

    groups = {}
    for item in data:
       li = d1.setdefault(item[0], [])
       li.append(item[1])
       print(d1)
    

    相关文章

      网友评论

          本文标题:python基础

          本文链接:https://www.haomeiwen.com/subject/hjaooctx.html