日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 列表拼接_【Python杂货铺】速学python基础

發(fā)布時間:2024/10/8 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 列表拼接_【Python杂货铺】速学python基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

“人生苦短,我學(xué)python”是編程屆的名言。用python寫小腳本的便捷性,讓很多其他語言的學(xué)習(xí)者把python當(dāng)作輔助語言。擁有了某一個語言的功底,再來學(xué)習(xí)另外一種語言應(yīng)該是十分快速的。編程理念都十分相似,只是看看語言的差異性。帶著Java的基礎(chǔ),學(xué)習(xí)Python,準(zhǔn)備上路了。

基礎(chǔ)的運(yùn)算

安裝好python環(huán)境后,運(yùn)行win+R,輸入python直接進(jìn)入python的交互頁面,這邊可以進(jìn)行數(shù)學(xué)運(yùn)算。

>>> 2+2 4

表1 數(shù)學(xué)操作符,優(yōu)先級從高到低

ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">

由上面可以看出python前兩個基礎(chǔ)類型 整數(shù)、 浮點(diǎn)類型。這兩個和java中的概念差不多。

字符串

作為基礎(chǔ)的類型,當(dāng)然少不了字符串了,和java一樣,字符串可以進(jìn)行拼接操作。例如:

>>> 'AAA' + 'BBB' 'AAABBB' >>> 'CCC'+25 Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str >>> 'DEF'*3 'DEFDEFDEF'

如上,‘AAA’+'BBB'可以直接進(jìn)行字符串的拼接。但是與java不同的是 python不會進(jìn)行類型強(qiáng)制轉(zhuǎn)化,所以當(dāng)用字符串‘CCC’+int型的25的時候就會報(bào)錯。對python進(jìn)行*操作,字符串會進(jìn)行復(fù)制。

變量名

這邊插一段,在java中進(jìn)行變量聲明的時候,需要指定變量類型,在python中不需要,但是python變量名也需要一定的規(guī)則。

  • 只能是一個詞。
  • 只能包含字母、數(shù)字和下劃線。
  • 不能以數(shù)字開頭。
  • 類型轉(zhuǎn)化

    為了讓int型的5可以轉(zhuǎn)化成字符串類型,從而和字符串拼接,python提供了一些內(nèi)置函數(shù)。
    表2 一些python內(nèi)置函數(shù)

    ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">

    控制流

    布爾值

    現(xiàn)在引入第四個數(shù)據(jù)類型,布爾值。python的布爾值也是有真或者假,但是python中的真為True(注意T必須大寫),假為False(F也必須為大寫),同樣的布爾類型不能與其他類型相比較。

    >>> True True >>> true Traceback (most recent call last):File "<stdin>", line 1, in <module> NameError: name 'true' is not defined >>> True = 1File "<stdin>", line 1 SyntaxError: can't assign to keyword

    比較類型

    表3 比較類型

    ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">

    同時python也可以使用二元操作符 and、or、not同java中的與、或、非。

    條件與代碼塊

    你前面看到的布爾表達(dá)式可以看成是條件,它和表達(dá)式是一回事。“條件”只是在 控制流語句的上下文中更具體的名稱。條件總是求值為一個布爾值,True 或 False。控制 流語句根據(jù)條件是 True 還是 False,來決定做什么。幾乎所有的控制流語句都使用條件。

    代碼塊

    python沒有java中那種{}來區(qū)分代碼塊,python中所有的代碼塊都是通過縮進(jìn)進(jìn)行的。

  • 縮進(jìn)增加時,代碼塊開始。
  • 代碼塊可以包含其他代碼塊。
  • 縮進(jìn)減少為零,或減少為外面包圍代碼塊的縮進(jìn),代碼塊就結(jié)束了。
  • >>> if 'a'=='b': ... print('真') ... else: ... print('假') ... 假

    以上是一個if else 的控制流,條件后面加上冒號,并且代碼塊需要縮進(jìn)方式。

    while循環(huán)的格式如下:

    spam = 0 while spam < 5: print('Hello, world.') spam = spam + 1

    另外 python 也有break 和continue 關(guān)鍵字可以使用。

    for循環(huán)

    for循環(huán)單另兒拿出來以示尊重,for循環(huán)的格式如下:

    for 關(guān)鍵字;
    一個變量名;
    in 關(guān)鍵字;
    調(diào)用 range()方法,最多傳入 3 個參數(shù);
    冒號;
    從下一行開始,縮退的代碼塊(稱為 for 子句)。

    for i in range(5):print('Jimmy Five Times (' + str(i) + ')')

    i分別執(zhí)行0、1、2、3、4.

    range()方法其實(shí)有三個參數(shù),只是可以省略其中兩個。range(start、end、gap),可以指定開始、結(jié)束和步長。

    >>> for i in range(0,10,3): ... print(i) ... 0 3 6 9

    函數(shù)

    導(dǎo)入模塊

    Python 程序可以調(diào)用一組基本的函數(shù),這稱為“內(nèi)建函數(shù)”,包括你見到過的print()、input()和 len()函數(shù)。Python 也包括一組模塊,稱為“標(biāo)準(zhǔn)庫”。每個模塊都是一個 Python 程序,包含一組相關(guān)的函數(shù),可以嵌入你的程序之中。例如,math模塊有數(shù)學(xué)運(yùn)算相關(guān)的函數(shù),random 模塊有隨機(jī)數(shù)相關(guān)的函數(shù),等等。
    利用import或者from import語句

    自定義函數(shù)

    除了內(nèi)建函數(shù),大部分的函數(shù)都是自定義的。(即使從模塊中導(dǎo)入的函數(shù)也是別人自定義好的,讓你使用的)

    def hello(name):print('Hello ' + name)

    def 函數(shù)名(參數(shù)):
    函數(shù)體

    None

    在Python中有一個值稱為None,它表示沒有值。None是NoneType數(shù)據(jù)類型的唯一值(其他編程語言可能稱這個值為null、nil或 undefined)。就像布爾值True和False一樣,None必須大寫首字母 N。

    異常處理

    def temp_convert(var):try:return int(var)except ValueError, Argument:print "參數(shù)沒有包含數(shù)字n", Argument

    類似于java,python捕獲處理一場用的是try,except,只不過在except后面除了可以跟異常類(比如例子中的ValueError),還可以跟上引發(fā)一場的參數(shù)(比如例子中的Argument,其實(shí)就是try中的var)

    列表

    列表可以看作java中的數(shù)組集合,可以存放一些元素,比如>>> spam = ['cat', 'bat', 'rat', 'elephant']。我們可以通過index獲取某個元素,比如spam[0]=‘cat’,同時可以從后往前拿數(shù)據(jù),比如spam[-1]='elephant'。

    切片

    除了直接操作index,獲取某個元素之外,還可以通過切片獲得一段子列表。

    >>> spam[1:3] ['bat', 'rat'] >>> spam[0:-1] ['cat', 'bat', 'rat']

    列表的拼接與復(fù)制

    與java不同的是,python的列表可以自由的拼接復(fù)制。

    >>> [1, 2, 3] + ['A', 'B', 'C'] [1, 2, 3, 'A', 'B', 'C'] >>> ['X', 'Y', 'Z'] * 3 ['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']

    列表結(jié)合某些關(guān)鍵字和方法

  • 刪除某列表中的某元素,可以直接用del關(guān)鍵字。
  • 也可以結(jié)合for循環(huán)
  • >>> supplies = ['pens', 'staplers', 'flame-throwers', 'binders'] >>> for i in range(len(supplies)): print('Index ' + str(i) + ' in supplies is: ' + supplies[i])
  • 利用 in 、not in 直接判斷某元素是否在列表中
  • >>> 'howdy' in ['hello', 'hi', 'howdy', 'heyas'] True >>> spam = ['hello', 'hi', 'howdy', 'heyas'] >>> 'cat' in spam False
  • index()方法判斷某元素在列表中的第一次出現(xiàn)的下標(biāo),沒有的話就報(bào)錯。
  • >>> spam = ['Zophie', 'Pooka', 'Fat-tail', 'Pooka'] >>> spam.index('Pooka') 1
  • 用 append()和 insert()方法在列表中添加值
    append()方法調(diào)用,將參數(shù)添加到列表末尾。insert()方法可以在列表任意下標(biāo)處插入一個值。insert()方法的第一個參數(shù)是新值的下標(biāo),第二個參數(shù)是要插入的新值。
  • 用remove()方法從列表中刪除值
  • 用sort()方法將列表中的值排序
  • 元組

    在java中,我們知道String 是被final修飾的,所以String本身是不能修改的,如果對String進(jìn)行修改,其實(shí)是在內(nèi)存中新建了一個新的String。類似的python中也有一個不可修改的數(shù)據(jù)類型——元組。元組和列表差不多,很多方法都是共通的。只不過,元組是用"()"表示,并且元組內(nèi)的元素不能被修改,也不能對元組進(jìn)行增加刪除操作。

    元組和列表的轉(zhuǎn)化

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

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

    引用與引用函數(shù)

    >>> 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]

    看上面的代碼,非常好理解,spam將引用復(fù)制給cheese,而不是復(fù)制的對象,所以對某個引用操作,都會改變那唯一的對象。如果想為cheese引用生成一個新的對象,就需要用到拷貝函數(shù)copy()和deepcopy()。其實(shí)就是java中的淺拷貝和深拷貝。

    >>> import copy >>> spam = ['A', 'B', 'C', 'D'] >>> cheese = copy.copy(spam) >>> cheese[1] = 42 >>> spam ['A', 'B', 'C', 'D'] >>> cheese ['A', 42, 'C', 'D']

    deepcopy()深拷貝是指,不僅生成一個與spam一樣新的對象,連spam內(nèi)部的數(shù)據(jù)也一起復(fù)制一堆新的對象出來。就好比說把'A','B'這種元素分別換成一個個子列表,淺拷貝不會對他們復(fù)制,而深拷貝會對這些對象進(jìn)行復(fù)制。

    字典

    像列表一樣,“字典”是許多值的集合。但不像列表的下標(biāo),字典的索引可以使用許多不同數(shù)據(jù)類型,不只是整數(shù)。字典的索引被稱為“鍵”,鍵及其關(guān)聯(lián)的值稱為“鍵-值”對。所以可以說字典就是java中的Map。

    myCat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}

    與列表不同的是,字典沒有順序的概念,所以不能通過操作index獲取某元素,不能使用切片,不能使用排序函數(shù)。

    操作字典

    基本操作

    所以操作字典,就需要另辟蹊徑,使用函數(shù)keys()、values()和 items()。顧名思義,分別是獲取字典的key值們,val值們,和鍵值對本身們。

    >>> spam = {'color': 'red', 'age': 42} >>> for v in spam.values():print(v) red 42 >>> for k in spam.keys():print(k) color age >>> for i in spam.items():print(i) ('color', 'red') ('age', 42)

    值得一提的是 spam.keys()獲得的是元組,如果希望的到對應(yīng)的列表就需要用list函數(shù)轉(zhuǎn)化。

    檢查字典中是否存在鍵或值

    可以利用in 或者not in 關(guān)鍵字判斷數(shù)據(jù)是否在字典中。

    >>> spam = {'name': 'Zophie', 'age': 7} >>> 'name' in spam.keys() True >>> 'Zophie' in spam.values() True >>> 'color' in spam.keys() False >>> 'color' not in spam.keys() True >>> 'color' in spam False

    get()和setdefault()方法

    get()可以通過key值找到相對應(yīng)的value值。get有兩個參數(shù),第一個參數(shù)是key值,第二個參數(shù)是在鍵值對不存在(或者說key不存在)的時候,給予的默認(rèn)值。

    >>> picnicItems = {'apples': 5, 'cups': 2} >>> 'I am bringing ' + str(picnicItems.get('cups', 0)) + ' cups.' 'I am bringing 2 cups.' >>> 'I am bringing ' + str(picnicItems.get('eggs', 0)) + ' eggs.' 'I am bringing 0 eggs.'

    setdefault()有兩個參數(shù),第一個是要插入鍵值對的key值,第二個是默認(rèn)值。當(dāng)原字典中有這個key值,就什么也不做,如果原字典中沒有這個key值,就將默認(rèn)值作為value,同key一起拼成鍵值對插入到字典中。

    >>> spam = {'name': 'Pooka', 'age': 5} >>> spam.setdefault('color', 'black') 'black' >>> spam {'color': 'black', 'age': 5, 'name': 'Pooka'} >>> spam.setdefault('color', 'white') 'black' >>> spam {'color': 'black', 'age': 5, 'name': 'Pooka'}

    字符串操作

    我們早已經(jīng)知道了字符串和其基本操作了,當(dāng)我們又學(xué)習(xí)了列表、元組、字典之后再來看一下更加豐富的處理字符串的方法。

    轉(zhuǎn)移字符和原始字符

    和java一樣,python也是用 對特殊字符進(jìn)行轉(zhuǎn)義。同時,還有原始字符 r??梢栽谧址_始的引號之前加上r,使它成為原始字符串?!霸甲址蓖耆雎运械霓D(zhuǎn)義字符,打印出字符串中所有的倒斜杠。

    >>> print(r'That is Carol's cat.') That is Carol's cat.

    注釋與多行字符

    python單行注釋可以使用特殊字符#,同時多行注釋可以使用""".

    # 這是一行注釋 """ 這是多行注釋 這是多行注釋 這是多行注釋 """

    有時候我們在使用print函數(shù)的時候,打印的字符串很長很長,為了頁面好看,可以使用'''將大字符串拆分成好幾行。

    print('''Dear Alice, Eve's cat has been arrested for catnapping, cat burglary, and extortion. Sincerely, Bob''')

    字符串下標(biāo)和切片

    一個字符串也可以當(dāng)作列表來處理,其中元素可以看作是一個個字符。所以就可以對字符串進(jìn)行下標(biāo)操作或者切片操作。同樣的就可以利用in、not in判斷某字符是否在字符串內(nèi)了。

    >>> spam = 'Hello world!' >>> spam[0] 'H' >>> spam[4] 'o' >>> spam[-1] '!' >>> spam[0:5] 'Hello' >>> spam[:5] 'Hello' >>> spam[6:] 'world!'

    一些字符串內(nèi)建方法

  • upper() 字符串全部變大寫
  • lower() 字符串全部變小寫
  • isupper()字符串至少有一個字母,并且所有字母都是大寫
  • islower()字符串至少有一個字母,并且所有字母都是小寫
  • isalpha()字符串只包含字母,并且非空
  • isalnum()字符串只包含字母和數(shù)字,并且非空
  • isdecimal()字符串只包含數(shù)字字符,并且非空
  • isspace()字符串只包含空格、制表符和換行,并且非空
  • startswith()字符串以該方法傳入的字符串開始
  • endswith()字符串以該方法傳入的字符串結(jié)束
  • join()拼接字符串,可指定分隔符
  • split()通過某值切割字符串
  • rjust()左填充,如果輸出數(shù)據(jù)不足,補(bǔ)充空格
  • ljust()右填充,如果輸出數(shù)據(jù)不足,補(bǔ)充空格
  • center()字符串居中,左右數(shù)據(jù)不足,補(bǔ)充空格
  • 結(jié)束

    嗚呼,python的基礎(chǔ)語法就算過了一遍,當(dāng)然這只是基礎(chǔ)中的基礎(chǔ)。像python怎么處理多線程、類的概念、內(nèi)存管理等內(nèi)容有時間再看吧。不忘初心,最開始學(xué)習(xí)python只是把它當(dāng)作輔助語言,寫寫小腳本什么的,不打算研究太深,畢竟時間有限,java還有很多東西要去研究,并且,除了編程,這個世界還有很多美好的事情等待我去體驗(yàn)。學(xué)以致用,寫爬蟲也是我學(xué)習(xí)python的一個動力,寫了一個小腳本爬取豆瓣電影TOP250.(好像這個是爬蟲入門經(jīng)典案例吧,哈哈)代碼貼一下

    import requests as rq from bs4 import BeautifulSoup import pandas as pddef get_data(url):print(url)html = rq.get(url).content.decode("utf-8")soup = BeautifulSoup(html,"lxml")divItems = soup.find_all("div","item")for item in divItems:name = item.find('span',{'class':'title'}).textrating_num = item.find('span',{'class':'rating_num'}).textnumber = item.find('em').textimgUrl = item.find("img").attrs['src']print("----------->")print("number:"+number)numbers.append(number)print("name:"+name)names.append(name)print("rating_num:"+rating_num)rating_nums.append(rating_num)print("imgUrl:"+imgUrl)imgUrls.append(imgUrl)print("----------->")data_df = pd.DataFrame() numbers = [] names = [] rating_nums = [] imgUrls = []for num in range(0,10):get_data("https://movie.douban.com/top250?start={}&filter=".format(int(num)*25))data_df["序列"] = numbers data_df["名稱"] = names data_df["評分"] = rating_nums data_df["海報(bào)"] = imgUrls writer = pd.ExcelWriter('movie_top250.xlsx') data_df.to_excel(writer, 'page_1', float_format='%.5f') # float_format 控制精度 writer.save()

    當(dāng)然,提前需要install的模塊 requests
    BeautifulSoup4
    pandas
    openpyxl
    lxml(BeautifulSoup4 的解析器)

    結(jié)束。

    總結(jié)

    以上是生活随笔為你收集整理的python 列表拼接_【Python杂货铺】速学python基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。