16.快速掌握Python列表類:Python列表類函數歸納總結

2021-01-11 和孩子一起學Python

百家號不支持代碼格式,文章裡的代碼排版都是亂的。

如果需要拷貝代碼,可以去同名的微信公眾號。

接上篇的題目。

給定如下圖的列表l1。

0表示空土坑,1表示有樹苗的土坑。

要求樹苗不能相鄰,還可以種植多少棵新樹苗。

顯然可以從列表的第1個位置開始循環。

如果這個位置前後都沒有樹苗,那麼這個位置滿足條件。

不過需要注意2點:

有2個特殊位置,第1個位置和最後1個位置,並不需要前後都為0。一種做法是,用if語句判斷位置,對這2個位置特殊處理。一種更巧妙的辦法是,用上一篇學過的知識,在列表 l1 頭尾補上一個0。這樣,在新列表中,只看第2個元素到倒數第2個元素,所有元素的判斷邏輯是一致的。 l2 = [0] + l1 + [0]

滿足條件的位置種上樹苗後,會影響後面的位置。比如下面的列表,位置3先滿足條件,位置4就不再滿足條件了。所以,當一個位置不滿足條件時,繼續判斷下一個位置,但是當一個位置滿足條件時,它的下一個位置肯定不滿足條件,要跳過。

完整的程序

import numpy

n = 20

l1 = numpy.random.randint(0,2,n).tolist()

for i in range(1,n):

if l1[i-1] == 1 and l1[i] == 1:

l1[i] = 0

l2 = [0] + l1 + [0]

count = 0

k = 1

while k < len(l2)-1:

if l2[k-1] == 0 and l2[k] == 0 and l2[k+1] == 0 :

count = count + 1

k = k + 2

else:

k = k + 1

備註:程序的前面用numpy模塊生成了一個只包含[0,1]的隨機列表,並用for循環清除了連續的1。

Python處理列表的內置函數

Python提供了一些內置函數,可以處理列表類的實例。

先介紹3個: len(),max(),min()

列表類的常用函數

列表類本身也有豐富的函數。

為了便於記憶,我們對這些函數進行了歸類整理。

前面說過,列表類就像是哆啦a夢的魔法口袋,本質上是一個容器,對於一個裝東西的容器,最常用的四大類操作是「增、刪、改、查」

新增:向列表裡增加元素

向列表裡新增元素有3個函數。分別是

append(obj):在列表末尾增加1個元素。如 old.append(8)

extend(seq):在列表末尾增加多個元素。如old.append([4,5]) 。

insert(index, obj):在列表指定的任意位置增加1個元素。如old.insert(2,6)。

示例:

刪除:從列表裡刪除元素

從列表裡刪除元素也有3個函數。分別是

pop(index):在列表任意位置刪除1個元素。

如果不指定位置,則刪除末尾的元素,如 old.pop()

如果指定位置,則刪除指定位置的元素,如 old.pop(2)

remove(obj):在列表刪除第一個值相同的元素。如old.remove(9)

clear():刪除列表所有元素。如old.clear()

注意:pop()函數是刪除列表裡某個位置上的元素,而remove()函數是刪除第一個值相等的元素,如列表 old = [1,2,9,3,7,9], old.remove(9),刪除的是列表裡的第一個9,列表變成 [1,2,3,7,9]

示例:

特別要理解新增、刪除操作後,列表裡元素位置的變化。以old.remove(3)為例,3這個元素被刪除後,後面的元素都往前排了。

修改:修改列表裡的元素

如果修改列表裡元素的值,用賦值運算符。

如 old = [1,2,9,3,7,9],要把第2個元素修改為6,old[1] = 6

如下的2個函數並不修改元素的值,而是修改元素的位置。

reverse():把列表裡的元素反轉。

sort():把列表裡的元素排序。

默認是升序,如 old.sort()

可以通過參數reverse=True,變成降序,如 old.sort(reverse=True)。

示例:

查找:在列表裡查找匹配的元素

count(obj):在列表裡查找匹配元素的個數。如old.count(9)。

index(obj):在列表表裡查找第一個匹配元素的位置。old.index(2)。

注意:

新增、刪除、修改類函數都是修改列表本身。而查找類的函數是返回一個結果。如果查找的元素在列表裡不存在,count()函數返回的結果是0,但index()函數會出錯。所以在使用index()函數之前,要先判斷列表裡是否有這個元素。

判斷列表裡是否有某個元素,除了用count()函數,還可以用 in 。

只能活1個

歷史上,猶太人曾經被羅馬人屠殺。

為躲避羅馬人的追殺,著名猶太歷史學家 約瑟夫(Josephus)和另外19個猶太人躲進了山洞。

困在山洞的他們缺衣少食,快被餓死了,於是商量著有尊嚴地自殺。

他們圍坐成一圈,從1開始報數,報到3的人先自殺,然後下一個人繼續從1開始報數,報到3的人再自殺……

如下圖

坐在3號位置的第1個自殺

6號位置的第2個自殺

……

如果Josephus想活下來,他要坐在什麼位置?

相關焦點

  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。列表,也是序列的一種。可以用中括號來聲明列表。列表是可變的。
  • Python列表和元組
    @Author :RunsenPython列表和元組總結什麼是列表和元組列表是動態的,長度大小不固定,可以隨意地增加、刪減或者改變而元組是靜態的,長度大小固定,無法增加刪減或者改變定義列表和函數```l = [1, 2, 'hello', 'world'] # 列表中同時含有 int 和 string 類型的元素l[1, 2, 'hello', 'world']tup
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。python常用方法1、append添加元素append()函數是將要添加的元素追加到列表的末尾。
  • python字符串、列表內的方法使用
    ascii碼,三種編碼格式Unicode、utf-8、gbkascii:字母,數字,特殊字符:1個字節,8位Unicode:16位 兩個字節 升級 32 位 四個字節utf-8:最少一個字節 8位表示。
  • 11個python列表方法全面解析!
    來源:AI入門學習列表是python裡很重要的數據類型,其中的方法總共有11個,數量掌握這些方法,對數據的處理效率會大大提高,現在分享給大家。參數:object可以添加 列表,字典,元組,集合,字符串等。#append()函數的操作對象是原列表。
  • Python數據類型之列表list
    # 列表是python中最基本的數據結構,它是一個有序序列,序列中的每個元素都分配一個數字(位置,索引)# 1、我們可以使用 方括號,中括號[]來創建列表# 2、我們可以直接將序列放在list(seq)
  • 一日一技:從Python列表中刪除重複值
    使用Dict方法 從列表中刪除重複項使用for循環 從列表中刪除重複項使用列表推導式 從列表中刪除重複項使用Numpy unique()方法 從列表中刪除重複項。使用Pandas方法 從列表中刪除重複項使用enumerate()刪除重複值使用Set()方法從列表中刪除重複值要從列表中刪除重複值,可以使用內置函數set()。 set()方法可以返回不同的元素.
  • Python 三十大實踐、建議和技巧
    range(10)]print(mylist)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]由於可以使用表達式,因此可以通過更複雜的數學方法來生成列表:squares = [x**2 for x in range(10)]print(squares)# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]甚至也可以調用外部函數:def
  • Python基礎教程(一) - 快速入門
    /usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。列表和元組可以將列表和元組當成普通的「數組」,可以保存任意數量任意類型的Python對象。通過從0開始的數字索引訪問元素。列表和元組有幾處重要的區別。列表元素用中括號([])包裹,元素的個數及元素值可以改變。元組用小括號(())包裹,不可以更改。
  • python入門第四課:列表的排序、元素遍歷
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes本節介紹列表的操作,包括列表的排序、元素遍歷等操作。Sort()方法會永久改變列表的排列順序,還有個函數sorted()只臨時改變列表順序,大家也可以測試一下。有時候需要從列表最後一個元素倒著列印,可以用reverse()方法,會永久改變列表的順序。如果需要知道列表有多少個元素,可以用len()方法。
  • python動態添加類對象成員:變量、函數
    pythonyu'yan那麼下面就以下圖中的代碼為例,為大家演示如何給python中的類對象動態的添加變量給類對象動態添加方法/函數注意:初學者在理解以下內容之前,需清楚python類中 self 參數的含義和作用,可自行搜索查閱:Python中self的用法!
  • python高階函數:map、filter、reduce的替代品
    什麼是高階函數?高階函數是一種將函數作為參數,或者把函數作為結果返回的函數,map函數、sorted函數就是高階函數的典型例子。map函數在小編以前的文章中做過相應的知識分享。sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。
  • 打基礎一定要吃透這12類 Python 內置函數
    內置函數就是python給你提供的, 拿來直接用的函數,比如print.,input等。截止到python版本3.6.2 python一共提供了68個內置函數,我將它們分成 12 類,方便你學習。1. 和數字相關1.
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    變量的計算和輸入輸出 08 變量的命名 09 if判斷語句 10 石頭剪刀布 11 while循環基本使用 12循環嵌套 13 函數的基本使用 14 函數的參數和返回值 15函數的嵌套調用 16模塊的簡介 17列表 18元祖 19字典
  • python:在函數中修改列表和禁止函數修改列表
    1.了不起的魔術師:編寫一個名為make_great()的函數,對魔術師列表進行修改,在每個魔術師的名字中都加入字樣「the Great」。調用函數show_magicians(),確認魔術師列表確實變了。
  • python:傳遞列表和在函數中修改列表
    1.魔術師:創建一個包含魔術師名字的列表,並將其傳遞給一個名為show_magicians()的函數,這個函數列印列表中每個魔術師的名字。for i in a:print(i)magician=["lili","xiao","biggget"]print(magician)我們將show_magicians()定義接受一個名字列表
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • python中類的繼承和多態
    類的繼承類繼承語法:Class 派生類名(基類名): #基類名寫在括號裡派生類成員在繼承關係中,已有的,設計好的類稱為父類或基類,新設計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。
  • python:pop函數詳解 - 二進位01
    pop函數詳解今天我為大家講解python中pop函數的使用。#簡介——pop()函數是python解釋器的內置方法,可作用於列表,字典。用法說明——在builtins.py中找到pop函數。列表:L.pop([index]) -> item -- remove and return item at index (default last).
  • Python 爬蟲面試題 170 道:2019 版
    通過本場 Chat,你將獲得如下知識點掌握 Python 的基礎語法語法常見的 Python 應用場景掌握 Python 閉包的使用以及裝飾器的使用82.Python 中的元類(metaclass)使用舉例83.簡述 any()和 all()方法84.filter 方法求出列表所有奇數並構造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]85.什麼是猴子補丁?