成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python數(shù)據(jù)結(jié)構(gòu)

fantix / 3171人閱讀

摘要:堆棧和隊(duì)列稱為線性數(shù)據(jù)結(jié)構(gòu),而圖形和樹(shù)是非線性數(shù)據(jù)結(jié)構(gòu)。在單次運(yùn)行期間,可能無(wú)法遍歷非線性數(shù)據(jù)結(jié)構(gòu)中的所有數(shù)據(jù)項(xiàng)。堆棧是根據(jù)概念插入和移除的對(duì)象的容器。將元素添加到堆棧時(shí),它被稱為推送操作,而當(dāng)您刪除或刪除元素時(shí),它被稱為彈出操作。

概述

????數(shù)據(jù)結(jié)構(gòu)是組織數(shù)據(jù)的方式,以便能夠更好的存儲(chǔ)和獲取數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)定義數(shù)據(jù)之間的關(guān)系和對(duì)這些數(shù)據(jù)的操作方式。數(shù)據(jù)結(jié)構(gòu)屏蔽了數(shù)據(jù)存儲(chǔ)和操作的細(xì)節(jié),讓程序員能更好的處理業(yè)務(wù)邏輯,同時(shí)擁有快速的數(shù)據(jù)存儲(chǔ)和獲取方式。

????在這篇文章中,你將了解到多種數(shù)據(jù)結(jié)構(gòu)以及這些數(shù)據(jù)結(jié)構(gòu)在Python中實(shí)現(xiàn)的方式。

抽象數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)

????數(shù)據(jù)結(jié)構(gòu)是抽象數(shù)據(jù)類型(ADT)的實(shí)現(xiàn),通常,是通過(guò)編程語(yǔ)言提供的基本數(shù)據(jù)類型為基礎(chǔ),結(jié)合相應(yīng)的代碼來(lái)實(shí)現(xiàn)。

????通常來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)分為兩類:原始數(shù)據(jù)結(jié)構(gòu)和非原始數(shù)據(jù)結(jié)構(gòu),原始數(shù)據(jù)結(jié)構(gòu)是用來(lái)表示簡(jiǎn)單的數(shù)據(jù)關(guān)系,非原始數(shù)據(jù)結(jié)構(gòu)包含原始數(shù)據(jù)結(jié)構(gòu),同時(shí),數(shù)據(jù)關(guān)系更加復(fù)雜,數(shù)據(jù)操作也更加復(fù)雜。

原始數(shù)據(jù)結(jié)構(gòu)

????原始數(shù)據(jù)結(jié)構(gòu) - 顧名思義 - 是最原始的或基本的數(shù)據(jù)結(jié)構(gòu)。 它們是數(shù)據(jù)操作的構(gòu)建塊,包含純粹,簡(jiǎn)單的數(shù)據(jù)值。 Python有四種原始變量類型:

Integers

Float

Strings

Boolean

Integers

????您可以使用Integers表示數(shù)字?jǐn)?shù)據(jù),具體地說(shuō),可以使用從負(fù)無(wú)窮大到無(wú)窮大的整數(shù)

Float

????“Float”代表“浮點(diǎn)數(shù)”。 您可以將它用于有理數(shù),通常以十進(jìn)制數(shù)字結(jié)尾,例如1.11或3.14。

????請(qǐng)注意,在Python中,您不必顯式聲明變量或數(shù)據(jù)的類型。 那是因?yàn)镻ython是一種動(dòng)態(tài)類型語(yǔ)言。 動(dòng)態(tài)類型語(yǔ)言是對(duì)象可以存儲(chǔ)的數(shù)據(jù)類型是可變的語(yǔ)言。

String

????String是字母,單詞或其他字符的集合。 在Python中,您可以通過(guò)在一對(duì)單引號(hào)或雙引號(hào)中包含一系列字符來(lái)創(chuàng)建字符串。 例如:"cake",“cookie”等。您還可以對(duì)兩個(gè)或多個(gè)字符串應(yīng)用+操作來(lái)連接它們,就像下面的示例中一樣:

x = "Cake"
y = "Cookie"
x + " & " + y #結(jié)果:"Cake & Cookie"

以下是您可以使用字符串執(zhí)行的一些其他基本操作; 例如,您可以使用*重復(fù)字符串一定次數(shù):

# Repeat
x * 2 #結(jié)果:"CakeCake"

您還可以切割字符串

z1 = x[2:] 
print(z1)

z2 = y[0] + y[1] 
print(z2)

# 結(jié)果
ke
Co

請(qǐng)注意,字符串也可以是字母數(shù)字字符,但+操作仍然用于連接字符串。

x = "4"
y = "2"
x + y

"42"

Python有許多內(nèi)置方法或輔助函數(shù)來(lái)操作字符串。 替換子字符串,大寫(xiě)段落中的某些單詞,在另一個(gè)字符串中查找字符串的位置是一些常見(jiàn)的字符串操作。 例如:

大寫(xiě)首字母

str.capitalize("cookie")
"Cookie"

以字符為單位檢索字符串的長(zhǎng)度。 請(qǐng)注意,空格也計(jì)入最終結(jié)果:

str1 = "Cake 4 U"
str2 = "404"
len(str1)

8

檢查字符串是否數(shù)字

str1 = "Cake 4 U"
str2 = "404"
str1.isdigit()
False

str2.isdigit()
True

替換

str1 = "Cake 4 U"
str2 = "404"
str1.replace("4 U", str2)
"Cake 404"

查找子字符串

str1 = "cookie"
str2 = "cook"
str1.find(str2)

0

str1 = "I got you a cookie"
str2 = "cook"
str1.find(str2)

12
Boolean

????這種內(nèi)置數(shù)據(jù)類型值為:True和False,這通常使它們可以與整數(shù)1和0互換。布爾值在條件和比較表達(dá)式中很有用,就像在下面的例子中一樣:

x = 4
y = 2
x == y
False

x > y
True

x = 4
y = 2
z = (x==y)
if z:
    print("Cookie")
else:
    print("No Cookie")
No Cookie
數(shù)據(jù)類型轉(zhuǎn)換

????有時(shí),你需要整型,但是接口返回給你的是字符串,這時(shí),你就需要數(shù)據(jù)類型轉(zhuǎn)換,Python里,可以使用type函數(shù)來(lái)查看數(shù)據(jù)類型。

i = 4.0
type(i)

float

當(dāng)你把數(shù)據(jù)的類型改變時(shí),就稱作數(shù)據(jù)類型轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換分為兩種:隱式轉(zhuǎn)換和顯示轉(zhuǎn)換。

隱式數(shù)據(jù)類型轉(zhuǎn)換

????數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換,不需要指定,編譯器會(huì)為您處理。 看看以下示例:

# float
x = 4.0 
# integer
y = 2 
z = x/y
type(z)

float

在上面的示例中,您不必將x的數(shù)據(jù)類型顯式更改為float以執(zhí)行浮點(diǎn)值除法。 編譯器隱式地為你做了這個(gè)。

顯式數(shù)據(jù)類型轉(zhuǎn)換

????這種類型的數(shù)據(jù)類型轉(zhuǎn)換是用戶定義的,這意味著您必須明確地通知編譯器更改某些實(shí)體的數(shù)據(jù)類型。例如:

x = 2
y = "The Godfather: Part "
fav_movie = y + x

TypeError
Traceback (most recent call last)

 in ()
      1 x = 2
      2 y = "The Godfather: Part "
----> 3 fav_movie = y + x


TypeError: Can"t convert "int" object to str implicitly

上面的示例,沒(méi)有明確的告訴編譯器x,y的數(shù)據(jù)類型,編譯器認(rèn)為x為整型,y為字符串,當(dāng)你試圖連接字符串和整數(shù),編譯器報(bào)錯(cuò)了,這個(gè)問(wèn)題你可以這樣解決:

x = 2
y = "The Godfather: Part "
fav_movie = (y) + str(x)
print(fav_movie)

The Godfather: Part 2

python內(nèi)置了一些類型轉(zhuǎn)換函數(shù):int(), float(), 和 str()

非原始數(shù)據(jù)結(jié)構(gòu)

????非原始數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)關(guān)系更加復(fù)雜,主要包括:

Arrays

Lists

Files

Arrays

????首先,Python中的數(shù)組是一種收集基本數(shù)據(jù)類型的緊湊方式,數(shù)組中的所有條目必須具有相同的數(shù)據(jù)類型。 但是,與其他編程語(yǔ)言(如C ++或Java)不同,數(shù)組在Python中不常用。
????一般來(lái)說(shuō),當(dāng)人們?cè)赑ython中談?wù)摂?shù)組時(shí),他們實(shí)際上是指List。 但是,它們之間存在根本區(qū)別。 對(duì)于Python,數(shù)組可以被視為存儲(chǔ)某種數(shù)據(jù)列表的更有效方式。 但是,列表里的元素具有相同數(shù)據(jù)類型。
????在Python中,數(shù)組由array模塊支持,在使用前需要導(dǎo)入并初始化。 存儲(chǔ)在數(shù)組中的元素受其數(shù)據(jù)類型的約束。 數(shù)組類型在數(shù)組創(chuàng)建期間指定,并使用類型代碼指定,類型代碼是單個(gè)字符,如下例中所示:

import array as arr
a = arr.array("I",[3,6,9])
type(a)

array.array
Lists

????Python中的列表用于存儲(chǔ)同類項(xiàng)的集合。 這些是可變的,這意味著您可以在不改變其身份的情況下更改其內(nèi)容。 您可以通過(guò)方括號(hào)[和]來(lái)識(shí)別列表,其中包含以逗號(hào)分隔的元素。 列表內(nèi)置于Python中:您無(wú)需多帶帶調(diào)用它們。

x = []
type(x)

list

x1 = [1,2,3]
type(x1)

list

x2 = list([1,"apple",3])
type(x2)

list

print(x2[1])

apple

x2[1] = "orange"
print(x2)

[1, "orange", 3]

注意:就像您在上面的示例中看到的x1一樣,列表也可以保存異構(gòu)項(xiàng),從而滿足數(shù)組的存儲(chǔ)功能。 除非您想對(duì)此集合應(yīng)用某些特定操作。
Python提供了許多操作和處理列表的方法。 將新項(xiàng)添加到列表,從列表中刪除一些項(xiàng),排序或反轉(zhuǎn)列表是常見(jiàn)的列表操作。 例如:

使用append()將11添加到list_num列表中。 默認(rèn)情況下,此數(shù)字將添加到列表的末尾。

list_num = [1,2,45,6,7,2,90,23,435]
list_char = ["c","o","o","k","i","e"]

list_num.append(11) 
print(list_num)

[1, 2, 45, 6, 7, 2, 90, 23, 435, 11]

插入數(shù)據(jù)

list_num.insert(0, 11)
print(list_num)

[11, 1, 2, 45, 6, 7, 2, 90, 23, 435, 11]

刪除元素

list_char.remove("o") 
print(list_char)

["c", "o", "k", "i", "e"]

根據(jù)索引刪除元素

list_char.pop(-2) # Removes the item at the specified position
print(list_char)

["c", "o", "k", "e"]

list_num.sort()
print(list_num)

[1, 2, 2, 6, 7, 11, 11, 23, 45, 90, 435]

list.reverse(list_num)
print(list_num)

[435, 90, 45, 23, 11, 11, 7, 6, 2, 2, 1]
Array vs List

????你可能想,既然List那么方便,為什么還要Array,這是因?yàn)橛捎贏rray存儲(chǔ)的數(shù)據(jù)類型一致,可以通過(guò)簡(jiǎn)單的函數(shù)完成一些特殊的操作。例如

array_char = array.array("u",["c","a","t","s"])
array_char.tostring()
print(array_char)

array("u", "cats")

您可以應(yīng)用array_char的tostring()函數(shù),因?yàn)镻ython知道數(shù)組中的所有項(xiàng)都具有相同的數(shù)據(jù)類型,因此操作在每個(gè)元素上的行為方式相同。 因此,在處理大量同類數(shù)據(jù)類型時(shí),數(shù)組非常有用。 因?yàn)镻ython不必多帶帶記住每個(gè)元素的數(shù)據(jù)類型細(xì)節(jié); 對(duì)于某些用途,與列表相比,數(shù)組可能更快并且使用更少的內(nèi)存。

在我們討論數(shù)組的主題時(shí),還值得提一下NumPy數(shù)組。 NumPy數(shù)組在數(shù)據(jù)科學(xué)領(lǐng)域中被廣泛用于處理多維數(shù)組。 它們通常比數(shù)組模塊和Python列表更有效。 在NumPy數(shù)組中讀取和寫(xiě)入元素更快,并且它們支持“矢量化”操作,例如元素添加。 此外,NumPy數(shù)組可以有效地處理大型稀疏數(shù)據(jù)集。例如:

import numpy as np

arr_a = np.array([3, 6, 9])
arr_b = arr_a/3 # Performing vectorized (element-wise) operations 
print(arr_b)

[ 1.  2.  3.]

arr_ones = np.ones(4)
print(arr_ones)

[ 1.  1.  1.  1.]

multi_arr_ones = np.ones((3,4)) 
print(multi_arr_ones)

[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

通常,列表數(shù)據(jù)結(jié)構(gòu)可以進(jìn)一步分類為線性和非線性數(shù)據(jù)結(jié)構(gòu)。 堆棧和隊(duì)列稱為線性數(shù)據(jù)結(jié)構(gòu),而圖形和樹(shù)是非線性數(shù)據(jù)結(jié)構(gòu)。 這些結(jié)構(gòu)及其概念可能相對(duì)復(fù)雜,但由于它們與現(xiàn)實(shí)世界模型的相似性而被廣泛使用。

注意:在線性數(shù)據(jù)結(jié)構(gòu)中,數(shù)據(jù)項(xiàng)按順序組織。 數(shù)據(jù)項(xiàng)一個(gè)接一個(gè)地遍歷,并且可以在單次運(yùn)行期間遍歷線性數(shù)據(jù)結(jié)構(gòu)中的所有數(shù)據(jù)項(xiàng)。 但是,在非線性數(shù)據(jù)結(jié)構(gòu)中,數(shù)據(jù)項(xiàng)不是按順序組織的。 這意味著元素可以連接到多個(gè)元素,以反映這些項(xiàng)目之間的特殊關(guān)系。 在單次運(yùn)行期間,可能無(wú)法遍歷非線性數(shù)據(jù)結(jié)構(gòu)中的所有數(shù)據(jù)項(xiàng)。

Stack

????堆棧是根據(jù)Last-In-First-Out(LIFO)概念插入和移除的對(duì)象的容器。 想象一下這樣一種場(chǎng)景,即在一個(gè)有一堆盤(pán)子的晚宴上,總是在堆頂部添加或移除盤(pán)子。 在計(jì)算機(jī)科學(xué)中,這個(gè)概念用于評(píng)估表達(dá)式和語(yǔ)法分析,調(diào)度算法/例程等。

????可以使用Python中的列表來(lái)實(shí)現(xiàn)堆棧。 將元素添加到堆棧時(shí),它被稱為推送操作,而當(dāng)您刪除或刪除元素時(shí),它被稱為彈出操作。 請(qǐng)注意,當(dāng)您在Python中使用堆棧時(shí),實(shí)際上有一個(gè)pop()方法可供使用:

# Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack = [1,2,3,4,5] 
stack.append(6) # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 (Top)
print(stack)

[1, 2, 3, 4, 5, 6]

stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 (Top)
print(stack)

[1, 2, 3, 4]
Queue

????隊(duì)列是根據(jù)先進(jìn)先出(FIFO)原則插入和移除的對(duì)象的容器。 在現(xiàn)實(shí)世界中排隊(duì)的一個(gè)很好的例子是售票柜臺(tái)的線路,根據(jù)他們的到達(dá)順序上車,因此首先到達(dá)的人也是第一個(gè)離開(kāi)的人。
????隊(duì)列可以有許多不同的類型,但在本教程中僅討論最基本的類型。 列表實(shí)現(xiàn)隊(duì)列效率不高,因?yàn)榱斜砟┪驳腶ppend()和pop()速度很快, 但是,最后插入和從列表開(kāi)頭刪除不是那么快,因?yàn)樗枰匚恢玫囊苿?dòng)。

Graphs

????數(shù)學(xué)和計(jì)算機(jī)科學(xué)中的圖是由節(jié)點(diǎn)組成的網(wǎng)絡(luò),節(jié)點(diǎn)也稱為頂點(diǎn),它們可以相互連接,也可以不相互連接。 連接兩個(gè)節(jié)點(diǎn)的線或路徑稱為邊。 如果邊緣具有特定的流動(dòng)方向,那么它是有向圖,方向邊緣被稱為弧。 否則,如果未指定方向,則該圖形稱為無(wú)向圖。
????這可能聽(tīng)起來(lái)非常理論化,當(dāng)你深入挖掘時(shí)會(huì)變得相當(dāng)復(fù)雜。 然而,圖形是數(shù)據(jù)科學(xué)中特別重要的概念,通常用于模擬現(xiàn)實(shí)生活中的問(wèn)題。 社會(huì)網(wǎng)絡(luò),化學(xué)和生物學(xué)的分子研究,地圖,推薦系統(tǒng)都依賴于圖形和圖形理論原理。這有個(gè)Python實(shí)現(xiàn)圖的例子:

graph = { "a" : ["c", "d"],
          "b" : ["d", "e"],
          "c" : ["a", "e"],
          "d" : ["a", "b"],
          "e" : ["b", "c"]
        }

def define_edges(graph):
    edges = []
    for vertices in graph:
        for neighbour in graph[vertices]:
            edges.append((vertices, neighbour))
    return edges

print(define_edges(graph))

[("a", "c"), ("a", "d"), ("b", "d"), ("b", "e"), ("c", "a"), ("c", "e"), ("e", "b"), ("e", "c"), ("d", "a"), ("d", "b")]

????您可以使用Graph做一些很酷的事情,例如嘗試找到兩個(gè)節(jié)點(diǎn)之間存在路徑,或者找到兩個(gè)節(jié)點(diǎn)之間的最短路徑,確定圖形中的周期。

????事實(shí)上,著名的“旅行商問(wèn)題”是找到一個(gè)最短路徑,它只訪問(wèn)每個(gè)節(jié)點(diǎn)一次并返回起點(diǎn)。 有時(shí)圖形的節(jié)點(diǎn)或弧已經(jīng)分配了權(quán)重或成本,您可以將其視為指定行走難度級(jí)別,并且您有興趣找到最便宜或最簡(jiǎn)單的路徑。

Tree

????現(xiàn)實(shí)世界中的一棵樹(shù)是一種生物,它的根在地上,樹(shù)枝上有葉子、果實(shí)。樹(shù)的分支以一種有組織的方式展開(kāi)。在計(jì)算機(jī)科學(xué)中,樹(shù)被用來(lái)描述數(shù)據(jù)如何被組織,除了根在頂部并且樹(shù)枝,樹(shù)葉跟隨,向底部蔓延并且樹(shù)被繪制為與真實(shí)樹(shù)相比被倒置。

????為了引入更多的符號(hào),根始終位于樹(shù)的頂部。后面的其他節(jié)點(diǎn)稱為分支,每個(gè)分支中的最終節(jié)點(diǎn)稱為葉。您可以將每個(gè)分支想象成一個(gè)較小的樹(shù)本身。根通常稱為父節(jié)點(diǎn),它在其下面引用的節(jié)點(diǎn)稱為子節(jié)點(diǎn)。具有相同父節(jié)點(diǎn)的節(jié)點(diǎn)稱為兄弟節(jié)點(diǎn)。

????樹(shù)有助于定義現(xiàn)實(shí)世界場(chǎng)景,并且從游戲世界到設(shè)計(jì)XML解析器,以及PDF設(shè)計(jì)原則都基于樹(shù)。在數(shù)據(jù)科學(xué)中,“基于決策樹(shù)的學(xué)習(xí)”實(shí)際上構(gòu)成了一個(gè)大范圍的研究。存在許多著名的方法,如裝袋,提升使用樹(shù)模型來(lái)生成預(yù)測(cè)模型。像國(guó)際象棋這樣的游戲構(gòu)建了一棵巨大的樹(shù),其中包含所有可能的動(dòng)作來(lái)分析和應(yīng)用啟發(fā)式方法來(lái)決定最佳操作。

class Tree:
    def __init__(self, info, left=None, right=None):
        self.info = info
        self.left  = left
        self.right = right

    def __str__(self):
        return (str(self.info) + ", Left child: " + str(self.left) + ", Right child: " + str(self.right))

tree = Tree(1, Tree(2, 2.1, 2.2), Tree(3, 3.1))
print(tree)

1, Left child: 2, Left child: 2.1, Right child: 2.2, Right child: 3, Left child: 3.1, Right child: None
Tuples

????元組是另一種標(biāo)準(zhǔn)序列數(shù)據(jù)類型。 元組和列表之間的區(qū)別在于元組是不可變的,這意味著一旦定義,您就無(wú)法刪除,添加或編輯其中的任何值。 這可能在您可能將控件傳遞給其他人但您不希望它們操縱集合中的數(shù)據(jù)但可能只是在數(shù)據(jù)副本中看到它們或多帶帶執(zhí)行操作的情況下有用。例如

x_tuple = 1,2,3,4,5
y_tuple = ("c","a","k","e")
x_tuple[0]

1

y_tuple[3]
x_tuple[0] = 0 # Cannot change values inside a tuple

---------------------------------------------------------------------------

TypeError
Traceback (most recent call last)

 in ()
      1 y_tuple[3]
----> 2 x_tuple[0] = 0 # Cannot change values inside a tuple


TypeError: "tuple" object does not support item assignment
Dictionary

????如果你想實(shí)現(xiàn)類似于電話簿的東西,字典是要使用的數(shù)據(jù)結(jié)構(gòu)。 您之前看到的所有數(shù)據(jù)結(jié)構(gòu)都不適用于電話簿。

????這是一本字典可以派上用場(chǎng)的時(shí)候。 字典由鍵值對(duì)組成。

x_dict = {"Edward":1, "Jorge":2, "Prem":3, "Elisa":4}
del x_dict["Elisa"]
x_dict

{"Edward": 1, "Jorge": 2, "Prem": 3}

x_dict["Edward"] # Prints the value stored with the key "Kevin".

1

您可以在詞典上應(yīng)用許多其他內(nèi)置功能:

len(x_dict)

3

x_dict.keys()

dict_keys(["Prem", "Edward", "Jorge"])

x_dict.values()

dict_values([3, 1, 2])
Sets

????集合是唯一對(duì)象的集合。 這些對(duì)于創(chuàng)建僅在數(shù)據(jù)集中包含唯一值的列表很有用。 它是一個(gè)無(wú)序的集合,但是一個(gè)可變的集合。

x_set = set("CAKE&COKE")
y_set = set("COOKIE")

print(x_set)

{"A", "&", "O", "E", "C", "K"}

print(y_set) # Single unique "o"

{"I", "O", "E", "C", "K"}

print(x - y) # All the elements in x_set but not in y_set

---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

 in ()
----> 1 print(x - y) # All the elements in x_set but not in y_set


NameError: name "x" is not defined

print(x_set|y_set) # Unique elements in x_set or y_set or both

{"C", "&", "E", "A", "O", "K", "I"}

print(x_set & y_set) # Elements in both x_set and y_set

{"O", "E", "K", "C"}
Files

????文件傳統(tǒng)上是數(shù)據(jù)結(jié)構(gòu)的一部分。 雖然大數(shù)據(jù)在數(shù)據(jù)科學(xué)行業(yè)中很常見(jiàn),但是沒(méi)有存儲(chǔ)和檢索先前存儲(chǔ)的信息的能力的編程語(yǔ)言幾乎沒(méi)有用。在Python中讀取和寫(xiě)入文件的語(yǔ)法與其他編程語(yǔ)言類似,但更容易處理。 以下是一些可幫助您使用Python處理文件的基本功能:

open()打開(kāi)系統(tǒng)中的文件,文件名是要打開(kāi)的文件的名稱;

read()讀取整個(gè)文件;

readline()一次讀取一行;

write()將字符串寫(xiě)入文件,并返回寫(xiě)入的字符數(shù); 和

close()關(guān)閉文件。

# File modes (2nd argument): "r"(read), "w"(write), "a"(appending), "r+"(both reading and writing)
f = open("file_name", "w")

# Reads entire file
f.read() 

# Reads one line at a time
f.readline() 

# Writes the string to the file, returning the number of char written
f.write("Add this line.") 

f.close()

open()函數(shù)中的第二個(gè)參數(shù)是打開(kāi)文件模式。 它允許您指定是要讀?。╮),寫(xiě)入(w),追加(a)還是讀取和寫(xiě)入(r +)。

總結(jié)

到此,你對(duì)Python的數(shù)據(jù)結(jié)構(gòu)已經(jīng)有了一個(gè)基本的了解。所謂好記性不如爛筆頭,干凈動(dòng)手操練起來(lái)吧。

說(shuō)明

本文翻譯自:https://www.datacamp.com/community/tutorials/data-structures-python

更多的內(nèi)容,歡迎查看我的博客:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43837.html

相關(guān)文章

  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 學(xué)習(xí)Python:做數(shù)據(jù)科學(xué)還是網(wǎng)站開(kāi)發(fā)?

    摘要:屬于前一種,而且日益被用于數(shù)學(xué)計(jì)算機(jī)器學(xué)習(xí)和多種數(shù)據(jù)科學(xué)應(yīng)用。近來(lái),由于擁有多個(gè)針對(duì)機(jī)器學(xué)習(xí)自然語(yǔ)言處理數(shù)據(jù)視覺(jué)化數(shù)據(jù)探索數(shù)據(jù)分析和數(shù)據(jù)挖掘的插件,豐富的數(shù)據(jù)科學(xué)生態(tài)體系得到了較大的發(fā)展,甚至有將數(shù)據(jù)科學(xué)社區(qū)化的趨勢(shì)。 譯者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,發(fā)布時(shí)間是10月29日。譯者一...

    neu 評(píng)論0 收藏0
  • 關(guān)于Python的三個(gè)謊言,別再盲目學(xué)Python

    摘要:關(guān)于的三個(gè)謊言,你一定要清楚。這是的整個(gè)知識(shí)體系圖譜,對(duì)于新手來(lái)說(shuō),沒(méi)必要學(xué)那么多。第四自動(dòng)化測(cè)試一切關(guān)于自動(dòng)化的東西,似乎都可以滿足,可以滿足大多數(shù)自動(dòng)化工作,提升工作效率。這都是正常的,千萬(wàn)別急著否定自己,懷疑自己。 ...

    TZLLOG 評(píng)論0 收藏0
  • Python爬蟲(chóng)學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...

    liaoyg8023 評(píng)論0 收藏0
  • Python與R、Matlab的對(duì)比

    摘要:我們來(lái)看一下美國(guó)相關(guān)專業(yè)人員對(duì)兩者的對(duì)比,只是粗略而不精準(zhǔn)的翻譯一下。小結(jié)其實(shí)在寫(xiě)這篇文章之前,我就問(wèn)過(guò)一下包括清華在內(nèi)的學(xué)校以及一些數(shù)學(xué)專業(yè)的學(xué)生,和還是占主流,但是經(jīng)過(guò)一番調(diào)查發(fā)現(xiàn)在美國(guó)在數(shù)據(jù)科學(xué)數(shù)學(xué)等方面好像漸成壓倒性的優(yōu)勢(shì)。 作為一枚程序員,想要研究Python編程語(yǔ)言與數(shù)學(xué)學(xué)習(xí)(教學(xué))的結(jié)合,就不能不了解以及比對(duì)一下其他數(shù)學(xué)學(xué)習(xí)與應(yīng)用的解決方案,比如R語(yǔ)言、Matlab等數(shù)學(xué)...

    yunhao 評(píng)論0 收藏0
  • 細(xì)數(shù)Python三十年技術(shù)演變史——萌發(fā)于小眾,崛起于AI

    摘要:作者宋天龍來(lái)源科技大本營(yíng)導(dǎo)語(yǔ)一切都始于年的那個(gè)圣誕節(jié),的誕生并不算恰逢其時(shí),它崛起充滿了機(jī)遇巧合,也有其必然性。年的圣誕節(jié),開(kāi)始編寫(xiě)語(yǔ)言的編譯器。年發(fā)布的標(biāo)志著的框架基本確定。年月發(fā)布了系列的最后一個(gè)版本,主版本號(hào)為。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龍來(lái)源 | AI科技大本營(yíng) ...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

fantix

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<