• Python 学习笔记(一)Data type


    Data types:

    Sequence types: (有序的类型)

    • strings
    • tuples
    • lists

    Immutable types: (不可变的类型)

    • numbers
    • strings
    • tuples

    #String:

    text = "Lists and Strings can be accessed via indices!"

    String 的几种表示法:

    • Single quotes: 'spa"m'
    • Double quotes: "spa'm"
    • Triple quotes: '''... spam ...''', """... spam ..."""
    • Escape sequences: "s\tp\na\0m"
    • Raw strings: r"C:\new\test.spm"

    >>> mantra = """Always look
    ... on the bright
    ... side of life."""
    >>>
    >>> mantra
    'Always look\n on the bright\nside of life.'
    
    >>> print(mantra)
    Always look
    on the bright
    side of life.

    反转字符串

    >>> S = 'hello'
    >>> S[::−1]
    'olleh'

    str and repr: (convert number to string)

    >>> print(str('b'),repr('a'))
    b 'a'
    >>> print(str('42'),repr('42'))
    42 '42'
    >>> print(str("42"),repr("42"))
    42 '42'

    character to ASCII:

    >>> ord('s')
    115
    >>> chr(115)
    's'

    如何改变String :

    >>> S = S + 'SPAM!' # To change a string, make a new one
    >>> S
    'spamSPAM!'
    
    >>> S = 'splot'
    >>> S = S.replace('pl', 'pamal')
    >>> S
    'spamalot'

    Format:

    >>> 'That is %d %s bird!' % (1, 'dead') # Format expression
    That is 1 dead bird!
    >>> 'That is {0} {1} bird!'.format(1, 'dead') # Format method in 2.6 and 3.0
    'That is 1 dead bird!'

    #List []

    L = ["London", "Paris", "Strasbourg", "Zurich"]

     The main properties of Python lists:

    • They are ordered
    • The contain arbitrary objects
    • Elements of a list can be accessed by an index
    • They are arbitrarily nestable, i.e. they can contain other lists as sublists
    • Variable size
    • They mutable, i.e. they elements of a list can be changed

      简单的copy会改变原来list的值,如果不想改变原来的值,则需要深度copy (deepcopy):

    >>> lst1 = ['a','b',['ab','ba']]
    >>> lst2 = lst1[:]
    >>> lst2[0] = 'c'
    >>> lst2[2][1] = 'd'
    >>> print(lst1)
    ['a', 'b', ['ab', 'd']]

      Deepcopy:

    >>> from copy import deepcopy
    >>> lst1 = ['a','b',['ab','ba']]
    >>> lst2 = deepcopy(lst1)
    >>> lst2[2][1] = "d"
    >>> lst2[0] = "c"
    >>> print(lst2)
    ['c', 'b', ['ab', 'd']]
    >>> print(lst1)
    ['a', 'b', ['ab', 'ba']]

    string to list:

    >>> S = 'spammy'
    >>> L = list(S)
    >>> L
    ['s', 'p', 'a', 'm', 'm', 'y']

    Operation:

    >>> s = "Test List"
    >>> l = list(s)
    >>> l
    ['T', 'e', 's', 't', ' ', 'L', 'i', 's', 't']
    >>> l.append('h')
    >>> l
    ['T', 'e', 's', 't', ' ', 'L', 'i', 's', 't', 'h']
    >>> l.extend(['a','b'])
    >>> l
    ['T', 'e', 's', 't', ' ', 'L', 'i', 's', 't', 'h', 'a', 'b']
    >>> l.insert(2,'c')
    >>> l
    ['T', 'e', 'c', 's', 't', ' ', 'L', 'i', 's', 't', 'h', 'a', 'b']
    >>> del l[2]
    >>> l
    ['T', 'e', 's', 't', ' ', 'L', 'i', 's', 't', 'h', 'a', 'b']
    >>> l.remove('t')
    >>> l
    ['T', 'e', 's', ' ', 'L', 'i', 's', 't', 'h', 'a', 'b']
    
    #remove all matched characters
    >>> for i in l:
        if i =='s':
            l.remove(i)
    
            
    >>> l
    ['T', 'e', ' ', 'L', 'i', 'h', 'a', 'b']
    >>> L = [x**2 for x in range(5)]
    >>> L
    [0, 1, 4, 9, 16]

    排序:

    >>> L = ['abc', 'ABD', 'aBe']
    >>> L.sort() # Sort with mixed case
    >>> L
    ['ABD', 'aBe', 'abc']
    >>> L = ['abc', 'ABD', 'aBe']
    >>> L.sort(key=str.lower) # Normalize to lowercase
    >>> L
    ['abc', 'ABD', 'aBe']
    >>>
    >>> L = ['abc', 'ABD', 'aBe']
    >>> L.sort(key=str.lower, reverse=True) # Change sort order
    >>> L
    ['aBe', 'ABD', 'abc']

    #Tuple ()

    tup1 = ('physics', 'chemistry', 1997, 2000);

      A tuple is an immutable list: 

    • Tuples are faster than lists.
    • If you know, that some data doesn't have to be changed, you should use tuples instead of lists, because this protect your data against accidental changes to these data.
    • Tuples can be used as keys in dictionaries, while lists can't.

      Tuple 语法:Commas and parentheses

    >>> x = (40) # An integer!
    >>> x
    40
    >>> y = (40,) # A tuple containing an integer
    >>> y
    (40,)

    Tuple to list:

    >>> T = (1, 2, 3, 4, 5)
    >>> L = [x + 20 for x in T]
    >>> L
    [21, 22, 23, 24, 25]
    
    >>> T = (1, 2, 3, 2, 4, 2)
    >>> T.index(2,3) #从index3开始找2
    3

    tuple immutability applies only to the top level of the ruple itself.

    >>> T = (1, [2, 3], 4)
    >>> T[1] = 'spam' # This fails: can't change tuple itself
    TypeError: object doesn't support item assignment
    >>> T[1][0] = 'spam' # This works: can change mutables inside
    >>> T
    (1, ['spam', 3], 4)

    #Set {}

    • an unordered collection
    • unique value
    • like keys of valuesless dictionary, but supports extra operations

    Can use to remove duplicates:

    >>> L = [1, 2, 1, 3, 2, 4, 5]
    >>> set(L)
    {1, 2, 3, 4, 5}
    >>> L = list(set(L)) # Remove duplicates
    >>> L
    [1, 2, 3, 4, 5]

    Extra operations:

    >>> engineers = {'bob', 'sue', 'ann', 'vic'}
    >>> managers = {'tom', 'sue'}
    >>> engineers & managers
    {'sue'}
    >>> engineers | managers
    {'ann', 'tom', 'bob', 'vic', 'sue'}
    >>> engineers - managers
    {'ann', 'vic', 'bob'}
    >>> managers ^ engineers # Who is in one but not both?
    {'ann', 'tom', 'vic', 'bob'}

    #Dictionary {key:value}

    • Sequence operations don’t work.
    • Keys need not always be strings.
    • Assigning to new indexes adds entries.
    >>> food = {"ham" : "yes", "egg" : "yes", "spam" : "no" }
    >>> D = {'spam': 2, 'ham': 1, 'eggs': 3}
    >>> list(D.values())
    [3, 1, 2]
    >>> list(D.items())
    [('eggs', 3), ('ham', 1), ('spam', 2)]

    Using dictionaries as 'records':

    >>> mel = {'name': 'Mark',
           'jobs': ['trainer', 'writer'],
           'web': 'www.rmi.net/˜lutz',
           'home': {'state': 'CO', 'zip':80513}}
    >>> mel['jobs']
    ['trainer', 'writer']
    >>> mel['jobs'][1]
    'writer'
    >>> mel['home']['zip']
    80513

    Ways to make dictionaries:

    {'name': 'mel', 'age': 45} # Traditional literal expression
    D = {} # Assign by keys dynamically
    D['name'] = 'mel'
    D['age'] = 45
    dict(name='mel', age=45) # dict keyword argument form
    dict([('name', 'mel'), ('age', 45)]) # dict key/value tuples form
    
    >>> dict.fromkeys(['a', 'b'], 0)
    {'a': 0, 'b': 0}

    Turn list to dictionary:

    >>> list(zip(['a', 'b', 'c'], [1, 2, 3])) # Zip together keys and values
    [('a', 1), ('b', 2), ('c', 3)]
    >>> D = dict(zip(['a', 'b', 'c'], [1, 2, 3])) # Make a dict from zip result
    >>> D
    {'a': 1, 'c': 3, 'b': 2}

    #new method in 3.0

    >>> D = {k: v for (k, v) in zip(['a', 'b', 'c'], [1, 2, 3])}
    >>> D
    {'a': 1, 'c': 3, 'b': 2}

    >>> D = {c.lower(): c + '!' for c in ['SPAM', 'EGGS', 'HAM']}
    >>> D
    {'eggs': 'EGGS!', 'ham': 'HAM!', 'spam': 'SPAM!'}

    Sort:

    >>> D
    {'a': 1, 'c': 3, 'b': 2} # Better yet, sort the dict directly
    >>> for k in sorted(D): print(k, D[k]) # dict iterators return keys
    ...
    a 1
    b 2
    c 3
    
    
  • 相关阅读:
    Educational Codeforces Round 14
    2016 Multi-University Training Contest 4
    2016 Multi-University Training Contest 2
    Codeforces
    BZOJ1776
    Codeforces Round #261 (Div. 2)
    String Painter, Chengdu 2008, LA4394
    Codeforces Round #239 (Div. 1)C, 407C
    python语句和语法
    Python快速入门——容易忽略的技巧
  • 原文地址:https://www.cnblogs.com/zyf7630/p/3069353.html
Copyright © 2020-2023  润新知