Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die gängigen integrierten Funktionen von Python

Einführung in die gängigen integrierten Funktionen von Python

巴扎黑
巴扎黑Original
2017-09-07 09:42:171345Durchsuche

Die sogenannten Built-in-Funktionen können ohne Import direkt genutzt werden. Der folgende Artikel stellt hauptsächlich einige gängige integrierte Funktionen für das grundlegende Erlernen von Python vor. Der Artikel stellt sie Ihnen ausführlich anhand von Beispielcode vor. Lassen Sie uns mit dem Editor darauf zurückgreifen.

Vorwort

Python bietet viele integrierte Funktionen zur Verarbeitung vieler Typen Führen Sie ähnliche Operationen für mehrere Objekttypen durch, d. h. für mehrere Objekttypen. Ich werde im Folgenden nicht näher darauf eingehen.

map()

Die Funktion map() akzeptiert zwei Parameter, einer ist eine Funktion und der andere ein iterierbares Objekt (Iterable). , map Wenden Sie die übergebene Funktion nacheinander auf jedes Element des iterierbaren Objekts an und geben Sie das Ergebnis als Iterator zurück.

Zum Beispiel gibt es eine Funktion f(x)=x^2 , und Sie möchten diese Funktion auf eine list[1,2,3,4,5,6,7,8,9] anwenden:

Mit einer einfachen Schleife können Sie Folgendes erreichen :


>>> def f(x):
...  return x * x
...
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
 L.append(f(n))
print(L)

Funktionen höherer Ordnung verwenden map():


>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

Das Ergebnis r ist ein Iterator, iterator Es ist eine Lazy-Sequenz. Verwenden Sie die Funktion list(), damit die gesamte Sequenz berechnet und eine Liste zurückgegeben wird.

Wenn Sie alle Zahlen in dieser Liste in Zeichenfolgen umwandeln möchten, ist dies einfach zu verwenden map():


>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

Kleine Übung: Verwenden Sie die Funktion map(), um den vom Benutzer eingegebenen nicht standardmäßigen englischen Namen in einen Standardnamen mit dem ersten Buchstaben in Großbuchstaben und dem Rest in Kleinbuchstaben zu ändern. Eingabe['adam', 'LISA', 'barT'],Ausgabe['Adam', 'Lisa', 'Bart']


def normalize(name):
  return name.capitalize()

 l1=["adam","LISA","barT"]
 l2=list(map(normalize,l1))
 print(l2)

reduce()

reduce() Die Funktion akzeptiert auch zwei Parameter, einer ist eine Funktion und der andere ist ein iterierbares Objekt. Reduce führt eine kumulative Berechnung für das Ergebnis der Anwendung der übergebenen Funktion auf jedes Element des iterierbaren Objekts durch. Geben Sie dann das Endergebnis zurück.

Der Effekt ist: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

Konvertieren Sie beispielsweise die Sequenz [1,2,3,4,5] in die Ganzzahl 12345:


>>> from functools import reduce
>>> def fn(x, y):
...  return x * 10 + y
...
>>> reduce(fn, [1, 2, 3, 4, 5])
12345

Kleine Übung: Schreiben Sie eine prod()-Funktion, die eine Liste akzeptieren und Reduzieren verwenden kann, um das Produkt zu berechnen:


from functools import reduce
def pro (x,y):
  return x * y
 def prod(L):
  return reduce(pro,L)
 print(prod([1,3,5,7]))

map() und reduce()Umfassende Übung: Schreiben Sie die Funktion str2float, um die Zeichenfolge „123.456“ in den Gleitkommatyp 123.456 umzuwandeln


CHAR_TO_FLOAT = {
 '0': 0,'1': 1,'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8,'9': 9, '.': -1
}
def str2float(s):
 nums = map(lambda ch:CHAR_TO_FLOAT[ch],s)
 point = 0
 def to_float(f,n):
   nonlocal point
   if n==-1:
    point =1
    return f
   if point ==0:
    return f*10+n
   else:
    point =point *10
    return f + n/point

 return reduce(to_float,nums,0)#第三个参数0是初始值,对应to_float中f

filter()

filter() Funktion wird zum Filtern der Sequenz verwendet filter() akzeptiert auch eine Funktion und eine Sequenz filter() wendet die übergebene Funktion nacheinander auf jedes Element an und bestimmt dann Ob der Rückgabewert True oder False ist, entscheidet darüber, ob das Element beibehalten oder verworfen wird.

Löschen Sie beispielsweise gerade Zahlen in der Liste:


def is_odd(n):
 return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

Kleine Übung: Verwenden Sie filter(), um Primzahlen zu finden Zahlen

Eine Möglichkeit, Primzahlen zu berechnen, ist die Ehrlich-Sieb-Methode. Ihr Algorithmus ist sehr einfach zu verstehen:

Listen Sie zunächst alle natürlichen Zahlen ab 2 auf und konstruieren Sie sie eine Sequenz:

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

Nehmen Sie die erste Zahl 2 der Folge, die eine Primzahl sein muss, und verwenden Sie dann 2, um die Vielfachen von 2 in der Folge herauszufiltern:

3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

Holen Sie sich die erste Zahl der neuen Folge 3, es muss eine Primzahl sein, und verwenden Sie dann 3, um die Vielfachen von 3 in der Folge herauszufiltern:

5, 6, 7, 8, 9 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

Nehmen Sie die erste Zahl 5 der neuen Folge und verwenden Sie dann 5 bis Filtern Sie die Vielfachen von 5 in der Reihenfolge heraus:

7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

Sieben Sie weiter und Sie erhalten alle Primzahlen.

Verwenden Sie Python, um diesen Algorithmus zu implementieren. Erstellen Sie zunächst eine Periodenfolge ab 3:


def _odd_iter(): 
n = 1
 while True:
  n = n + 2
  yield n
#这是一个生成器,并且是一个无线序列

Definieren Sie eine Filterfunktion :


def _not_pisible(n):
 return lambda x: x % n > 0

Definieren Sie einen Generator, der kontinuierlich die nächste Primzahl zurückgibt:


def primes():
 yield 2
 it = _odd_iter() # 初始序列
 while True:
  n = next(it) # 返回序列的第一个数
  yield n
  it = filter(_not_pisible(n), it) # 构造新序列

Drucken Sie 100 Primzahlen innerhalb:


for n in primes():
 if n < 100:
  print(n)
 else:
  break

sorted()

Pythons integrierte Funktion sorted() Funktion kann die Liste sortieren:


>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]

sorted() Die Funktion ist auch eine Funktion höherer Ordnung und kann auch eine Schlüsselfunktion akzeptieren, um eine benutzerdefinierte Sortierung zu implementieren:


>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

Die durch die Taste angegebene Funktion wird auf jedes Element der Liste angewendet und entsprechend dem von der Tastenfunktion zurückgegebenen Ergebnis sortiert.

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。如果想忽略大小写可都转换成小写来比较:


>>> sorted([&#39;bob&#39;, &#39;about&#39;, &#39;Zoo&#39;, &#39;Credit&#39;], key=str.lower)
[&#39;about&#39;, &#39;bob&#39;, &#39;Credit&#39;, &#39;Zoo&#39;]

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True


>>> sorted([&#39;bob&#39;, &#39;about&#39;, &#39;Zoo&#39;, &#39;Credit&#39;], key=str.lower, reverse=True)
[&#39;Zoo&#39;, &#39;Credit&#39;, &#39;bob&#39;, &#39;about&#39;]

小练习:假设我们用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 。用sorted()对上述列表分别按c成绩从高到低排序:


L = [(&#39;Bob&#39;, 75), (&#39;Adam&#39;, 92), (&#39;Bart&#39;, 66), (&#39;Lisa&#39;, 88)]
def by_score(t):
 for i in t:
   return t[1]
L2=sorted(L,key= by_score)
print(L2)

运用匿名函数更简洁:


L2=sorted(L,key=lambda t:t[1])
print(L2)

Das obige ist der detaillierte Inhalt vonEinführung in die gängigen integrierten Funktionen von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn