1. 程式人生 > >【Python】D4 今天感覺特別困

【Python】D4 今天感覺特別困

 

最近去出差了,巨窮,報銷還要等下個月,揭不開鍋了快要

 

 

index()

列表值有一個index()方法,可以傳入一個值,如果該值存在於列表中,就返回它的下標。如果該值不在列表中,Python 就報ValueError。

用append()和insert()方法在列表中新增值

要在列表中新增新值,就使用append()和insert()方法。

用remove()方法從列表中刪除值

給remove()方法傳入一個值,它將從被呼叫的列表中刪除

用sort()方法將列表中的值排序

數值的列表或字串的列表,能用sort()方法排序。

這裡呼叫的是 example.sort() 而不是sort(example)

example = [2, 5, 3.14, 1, -7]
print('example.sort()=')
print(str(example.sort()))

如果嘗試返回example.sort()可見返回的是一個None型別

# -*- coding: utf-8 -*-
"""
Created on Mon Nov 12 14:57:55 2018

@author: Lenovo
"""

example = [2, 5, 3.14, 1, -7]
print('example.sort()=',end='')
example.sort()
print(str(example))

runfile('E:/PythonLearning/sort.py', wdir='E:/PythonLearning')
example.sort()=[-7, 1, 2, 3.14, 5]

遇到了一個int轉換的問題:搜尋了一下發現從轉換可以發現很多有意思的事情:

檢查是否為float型別:

def is_float(value):
  try:
    float(value)
    return True
  except:
    return False

準確命名應該是: is_convertible_to_float(value)

神奇的Python:

val                   is_float(val) Note
--------------------  ----------   --------------------------------
""                    False        Blank string
"127"                 True         Passed string
True                  True         Pure sweet Truth
"True"                False        Vile contemptible lie
False                 True         So false it becomes true
"123.456"             True         Decimal
"      -127    "      True         Spaces trimmed
"\t\n12\r\n"          True         whitespace ignored
"NaN"                 True         Not a number
"NaNanananaBATMAN"    False        I am Batman
"-iNF"                True         Negative infinity
"123.E4"              True         Exponential notation
".1"                  True         mantissa only
"1,234"               False        Commas gtfo
u'\x30'               True         Unicode is fine.
"NULL"                False        Null is not special
0x3fade               True         Hexadecimal
"6e7777777777777"     True         Shrunk to infinity
"1.797693e+308"       True         This is max value
"infinity"            True         Same as inf
"infinityandBEYOND"   False        Extra characters wreck it
"12.34.56"            False        Only one dot allowed
u'四'                 False        Japanese '4' is not a float.
"#56"                 False        Pound sign
"56%"                 False        Percent of what?
"0E0"                 True         Exponential, move dot 0 places
0**0                  True         0___0  Exponentiation
"-5e-5"               True         Raise to a negative number
"+1e1"                True         Plus is OK with exponent
"+1e1^5"              False        Fancy exponent not interpreted
"+1e1.3"              False        No decimals in exponent
"-+1"                 False        Make up your mind
"(1)"                 False        Parenthesis is bad

You think you know what numbers are? You are not so good as you think! Not big surprise.


如果元組中只有一個值,你可以在括號內該值的後面跟上一個逗號,表明這種情況。否則,Python 將認為,你只是在一個普通括號內輸入了一個值。逗號告訴Python,這是一個元組(不像其他程式語言,Python 接受列表或元組中最後表項後面跟的逗號)。在互動式環境中,輸入以下的type()函式呼叫,看看它們的區別:

>>> type(('hello',))
<class 'tuple'>
>>> type(('hello'))
<class 'str'>

你可以用元組告訴所有讀程式碼的人,你不打算改變這個序列的值。如果需要一個永遠不會改變的值的序列,就使用元組。使用元組而不是列表的第二個好處在於,因為它們是不可變的,它們的內容不會變化,Python 可以實現一些優化,讓使用元組的程式碼比使用列表的程式碼更快。

 

函式list()和tuple()將返回傳遞給它們的值的列表和元組版本。

>>> tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
>>> list(('cat', 'dog', 5))
['cat', 'dog', 5]
>>> list('hello')
['h', 'e', 'l', 'l', 'o']

Python列表的引用

>>> spam = [0, 1, 2, 3, 4, 5]
>>> cheese = spam
>>> cheese[1] = 'Hello!'
>>> spam
[0, 'Hello!', 2, 3, 4, 5]
>>> cheese
[0, 'Hello!', 2, 3, 4, 5]

程式碼只改變了cheese 列表,但似乎cheese 和spam 列表同時發生了改變。

傳遞引用的問題:

4.7.1 傳遞引用
要理解引數如何傳遞給函式,引用就特別重要。當函式被呼叫時,引數的值被複制給變元。對於列表(以及字典,我將在下一章中討論),這意味著變元得到的是引用的拷貝。要看看這導致的後果,請開啟一個新的檔案編輯器視窗,輸入以下程式碼,並儲存為passingReference.py:

def eggs(someParameter):
    someParameter.append('Hello')

spam = [1, 2, 3]
eggs(spam)
print(spam)
[1, 2, 3, 'Hello']

儘管spam和someParameter 包含了不同的引用,但它們都指向相同的列表。這就是為什麼函式內的append('Hello')方法呼叫在函式呼叫返回後,仍然會對該列表產生影響。請記住這種行為:如果忘了Python 處理列表和字典變數時採用這種方式,可能會導致令人困惑的缺陷。

書籤 4.7.2 P76 Y102