zoukankan      html  css  js  c++  java
  • python学习笔记3

    合并字符串

    r来形成原始字符串
    +不能像c#一样直接连接一个字符串和有关数值。

    切片

    能够 从头開始也能够倒数计数。也能够间隔一定距离取

    >>> numlist=list(range(100))
    >>> numlist
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    >>> numlist[:10)
    SyntaxError: invalid syntax
    >>> numlist[:10]     #这里冒号前面的0能够省略
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> numlist[:10:2]
    [0, 2, 4, 6, 8]
    >>> numlist[-10::2]   #这里冒号中间的-1能够省略;
    [90, 92, 94, 96, 98]
    >>> numlist[-10::3]
    [90, 93, 96, 99]
    >>>

    迭代:

    可迭代对象iterable 、 for … in … 、 enumerate函数能够把一个索引元素对,也就相当于一个带序号和实际内容的元素对组成的list
    容器和生成器都是可迭代对象,而仅仅有生成器才是迭代器对象。
    容器包含序列(list与tuple)、集合set、字典dict。Enumerate能够对序列生成索引元素对。

    mydict={}
    mydict['数学']=60
    mydict['语文']=90
    mydict['英语']=100
    
    for str,score in mydict.items():
        print(str,score)
    
    for str in mydict.items():
        print(str)
    
    for index,str in enumerate(mydict.items()):
    print(index,str)

    列表生成式

    列表生成式就是用生成式来简化循环生成列表的过程。

    生成式与if语句联合

    generatedList=[x*x for x in range(1,11) if x%2==0]
    print(generatedList);

    两个for联合能够使用两层循环形成全排列

    allSortedList=[(x,y) for x in 'ABC' for y in [1,2,3]]
    print(allSortedList)

    列出当前文件夹下全部文件和文件夹名

    import os
    dir=[d for d in os.listdir('.')]
    print(dir)

    字符串变小写

    #測试
    strlist=['Abc','dE12',334,'12F']
    #strlist=[strs.lower() for strs in strlist if isinstance(strs,str)]
    strlist=[strs for strs in strlist 
             if not isinstance(strs,str) or isinstance(strs.lower(),str)]
    print(strlist)

    生成器

    假设列表元素能够依照某种算法推算出来,那就不必生成完整的列表。仅仅要依据须要来生成,这样就能节省内存空间。

    这就是生成器generator();generator是一个算法,而不是一个列表,假设想訪问下一个元素须要使用next(g);

    生成器有两种方法创建。第一种是使用生成式的方式。另外一种是使用定义生成器函数的方式。


    生成式也是iterable对象

    生成式的方式生成生成器

    g=(x*x for x in range(1,10))
    for n in g:
        print(n)

    iterable对象在迭代到最后一个元素后假设继续迭代会产生StopIteration异常,能够进行捕获。

    # -_-! coding: utf-8 -_-!
    myList=list(range(1,100))
    for index,num in enumerate(myList):
        print(index,num)
    
    #迭代
    mydict={}
    mydict['数学']=60
    mydict['语文']=90
    mydict['英语']=100
    
    for str,score in mydict.items():
        print(str,score)
    
    #dict的默认是迭代key,能够用.value()迭代值,能够用.items()迭代键值对
    for str in mydict.items():
        print(str)
    
    for index,str in enumerate(mydict.items()):
        print(index,str)
    
    #生成式
    #与if语句联合
    generatedList=[x*x for x in range(1,11) if x%2==0]
    print(generatedList);
    
    
    #两个for联合
    #能够使用两层循环形成全排列
    allSortedList=[(x,y) for x in 'ABC' for y in [1,2,3]]
    print(allSortedList)
    
    #列出当前文件夹下全部文件和文件夹名
    import os
    dir=[d for d in os.listdir('.')]
    print(dir)
    
    
    #字符串变小写
    #測试
    strlist=['Abc','dE12',334,'12F']
    #strlist=[strs.lower() for strs in strlist if isinstance(strs,str)]
    strlist=[strs for strs in strlist 
             if not isinstance(strs,str) or isinstance(strs.lower(),str)]
    print(strlist)
    
    lista=[1,2,3]
    listb=[2,3,4]
    lista=lista+listb;
    print(lista)
    
    
    #生成器
    ##生成式的方式生成生成器
    g=(x*x for x in range(1,10))
    for n in g:
        print(n)
    
    ##定义函数的方式生成生成器
    ###斐波那契额数 1 1 2 3 5 8
    def fab(n):
        x,y,z=0,1,0
        while z<n:
            yield y #返回生成器的函数与其他函数的差别就在于print改成yied,在此处就可调用next()
            x,y=y,x+y#这里能够用作交换x,y的值比其他语言要少了两行
            z=z+1
        return 'done'
    
    g=fab(10)
    for n in g:
        print(n)
    
    
    ##捕获StopIteration异常
    def fab(n):
        x,y,z=0,1,0
        while z<n:
            yield y #返回生成器的函数与其他函数的差别就在于print改成yied,在此处就可调用next()
            x,y=y,x+y#这里能够用作交换x,y的值比其他语言要少了两行
            z=z+1
        return 'done'
    
    f=fab(9)
    while True:
        try:
            x=next(f)
            print(x)
        except StopIteration as e:
            print('stopIteration结束了',e.value)
            break
    
    
    #杨辉三角
    def triangles():
        x,y,z,temp=[1],0,0,[]
        while True:
            yield x
            for num in x:
                temp.append(num+y)
                y=num
            temp.append(x[-1]+z)
    
            x,temp,y=temp,[],0
        return 'done'
    
    n=0
    for t in triangles():
        print(t)
        n=n+1
        if n==10:
            break
  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8442089.html
Copyright © 2011-2022 走看看