1. 程式人生 > >python的切片,迭代,列表生成式

python的切片,迭代,列表生成式

python的程式碼需要有優雅,明確,簡單的特性。代表著需要程式碼越少越好,越簡單越好。為此,python提供了許多高階特性,如切片,迭代,列表生成式等等,可以有效的用簡單程式碼實現複雜功能。

1,切片

適用型別:list, tuple, str

切片功能簡單說就是實現擷取,不管是列表list,不可變列表tuple還是字串str,使用切片可以使程式碼更簡單。

    (1)list

li = ['0', '1', '2', '3', '4', '5', '6']
print(li[1:3])
print(li[:2])
print(li[3:])
print(li[-5:-3])
print(li[-5:])
print(li[::2])

   結果為:

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

    li[1:3] : 從list的索引1開始取,取到索引3停止,不包括索引3

    li[:2] : 從頭取,取到索引2停止,不包括2

    li[3:] : 從索引3一直取到最後

    li[-5:-3] : 從索引-5取到索引-3,不包括索引-3

    li[-5:] : 從索引-5取到最後

    li[::2] : 從頭取到尾,每2個元素取一箇中間隔一個

    (2)tuple

    tuple本身就是一種list, 而它的切片操作與list切片操作相同,只是得到結果依然是不可變的tuple

tup = ('0', '1', '2', '3', '4', '5')
print(tup[2:])
print(tup[:4])
print(tup[1::3])

   結果為:

 ('2', '3', '4', '5')
 ('0', '1', '2', '3') 
 ('1', '4')

    (3)str

    str的切片操作是對每個字元的擷取,其它與list和tuple切片相同

string = '012345'
print(string[2:])
print(string[:4])
print(string[1::3])

    結果為:

2345
0123
14

2,迭代

適用型別:list, tuple, str, dict

python中可迭代的型別為Iterable型別。比如list, tuple, str等

python的for迴圈抽象程度比較高,不光是列表list和tuple可以迭代,字串和字典也可以。

    (1)list, tuple

li = ['zero', 'one', 'two', 'three', 'foul', 'five', 'six']
for value in li:
    print(value)

     結果為:

zero
one
two
three
foul
five
six

    類似於forEach,不能獲取每次迭代的索引,只獲取迭代數值

for index, value in enumerate(li):
    print(index, value)

     結果為:

0 zero
1 one
2 two
3 three
4 foul
5 five
6 six

    enumerate()函式可以把list變成索引-元素這種形式,從而可以在for迴圈中同時獲取索引和數值

for index in range(len(li)):
    print(index, li[index])
# 同樣可以獲取上面的結果

    (2)dict

dic = {'one': 1, 'two': 2, "three": 3}
for key in dic:
    print(key)

       結果為:

two
three
one

    直接迭代字典,每次獲取的元素是字典的key

for value in dic.values():
    print(value)
1
3
2

    迭代字典的所有數值,用來獲取每次迭代的數值。

for key, value in dic.items():
    print(key, value)
one 1
three 3
two 2
for value in dic.items():
    print(value)
('two', 2)
('three', 3)
('one', 1)

    (3)str

    字串的迭代迭代的是字串的每一個字元

string = '012345'
for value in string:
    print(value)
0
1
2
3
4
5

3,列表生成式

使用型別:可以迭代的型別

列表生成式可以進一步簡化程式碼。

列表生成式返回的是陣列, for前面的表示式可以代替for中的return

a = [x * x * x for x in range(0, 11)]
print(a)

    得到0-10中每個數的立方所組成的陣列

[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
b = [x * x * x for x in range(0, 11) if x % 2 == 0]
print(b)

    得到0-10中每個偶數的立方所組成的陣列

[0, 8, 64, 216, 512, 1000]
a = [1, 2, 3, 4, 5, 6]
b = [4, 5]
c = [x * y for x in a if x % 2 == 0 for y in b]
print(c)

    可以得到a中的每個偶數和b中的每個數相乘的結果組成的陣列

 [8, 10, 16, 20, 24, 30]
a = {'a': 'b', 'c': 'd', 'e': 'f'}
b = [key + value for key, value in a.items()]
print(b)

    可以得到字典a中每個元素的key與value相加的結果得到的陣列

['ab', 'cd', 'ef']

相關推薦

Python切片列表生成、生成器、

切片: 在Python中對於具有序列結構的資料來說都可以使用切片操作,比如列表(list)中,我們可以用切片取出其中一部分元素。 需要注意的是序列物件某個索引位置返回的是一個元素,而切片操作返回是和被切片物件相同型別物件的副本 如: >>> alis

Python切片列表生成

切片 L=list(range(5)) 取相應範圍內的元素:L[m:n]表示從索引m開始取,直到索引n為止,但不包括索引n,如果第一個索引是0,還可以省略: L[0:3]/L[:3]——[1,2,3] 還支援倒數切片: L[-2:]——[4,5] L[-2:-

Python入門 第三天(set、函式、切片列表生成

Python中什麼是set dict的作用是建立一組 key 和一組 value 的對映關係,dict的key是不能重複的。 有的時候,我們只想要 dict 的 key,不關心 key 對應的 value,目的就是保證這個集合的元素不會重複,這時,set就派上用場了。

Python學習筆記--3、高階特性-切片列表生成、生成器、

廖老師在這個地方提到了,在Python 中,並不是寫的程式碼越多越好,而是寫的程式碼越少越好,月簡單越好。 1、切片  什麼是切片,簡單來說就是對list或者tuple中的部分元素進行取出操作。例子如下: 應注意的是,python的首位的元素的編號是0,所以,要確定好[

python基礎之切片列表生成

取一個list的部分元素是非常常見的操作。比如,一個list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3個元素,應該怎麼做? 笨辦法: >>> [L[0], L[1], L[2]] ['Adam', 'Lisa',

09 Python 高階特性1(切片列表生成

1 切片 對於取指定索引範圍的數,用迴圈麻煩,Python提供了切片(Slice)操作來簡化操作。 # 定義一個List >>> arr=['zhangsan','lisi','wanger'] >>> arr ['z

python3自學筆記4-切片列表生成、生成器和

目錄切片迭代列表生成式生成器迭代器 切片 1、Python提供了切片(Slice)操作符:; 2、list可以進行切片操作: # 生成列表 >>> L = list(range(100)) >>> L [0, 1, 2, 3,

切片列表生成

1.切片 表示從第0個元素到第n-1 即0 1  2  ;開頭兒是0可以不寫0。 什麼都不寫可以複製一個同樣的list ;【支援倒數切片。倒數第一個是-1 【去除字串首尾的空格】 遞迴呼叫 2.迭代 list  tuple dict 等都可以迭代,可以通過col

python2.7學習筆記(6) ——高階特性:切片列表生成、生成器

切片 用於擷取list中的元素,比如L是一個list L[a : b] a 迭代 如果給定一個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration)。 只要是可迭代物件,無論有無下

自學Python--列表生成、生成器、

可迭代物件:可通過for迴圈遍歷的物件。通過collections模組的Iterable判斷 from collections import Iterable print(isinstance('abc', Iterable)) # True 如果對列表實現類似java的

python基礎--切片、叠列表生成

計數 多語言 import nts rate 一是 使用 enumerate mes 原文地址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143

python切片列表生成

python的程式碼需要有優雅,明確,簡單的特性。代表著需要程式碼越少越好,越簡單越好。為此,python提供了許多高階特性,如切片,迭代,列表生成式等等,可以有效的用簡單程式碼實現複雜功能。 1,切片 適用型別:list, tuple, str 切片功能簡單說就是實現擷取,不管是列表list,不可變列

Python學習--3.1切片列表生成器生成器

切片 >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3個元素,應該怎麼做? 笨辦法: >>> [L[0], L[1], L[2]] ['Micha

python切片、生成器、列表生成等高階特性學習

python高階特性 1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 當我們要取一個list中的前n各元素時,如果前n個少的話,我們還可以一個一個的取,但

Python 生成器yield關鍵字send()傳參給yield語句

  demo.py(生成器,yield關鍵字): # 生成器是一個特殊的迭代器。可以用for...in遍歷。 # 帶有yield關鍵字的函式,不再是一個函式,而是一個生成器模板。呼叫該模板會返回一個生成器物件。 def create_num(all_num): a, b

C++ 使用Vector容器查詢插入去重 用法總結

返回最後一個元素: return v.back(); 迭代器: for (std::vector<int>::iterator it = v.begin(); it != v.end(); it++) {

Python記錄12:器+生成器+生成

'''1. 什麼是迭代器 什麼是迭代:迭代就是一個重複的過程,但是每一次重複都是基於上一次的結果而進行的 單純的重複不是迭代: while True: print(1) 迭代的過程 l=['a','b','c'] i=0 while i < len(l): pr

從一個小例子來初步認識遞迴動態規劃。

問題:有n步臺階,一次只能上1步或者2步,共有多少種走法? 思路: a 遞迴 步驟1:找到走完前n步臺階和前n-1步臺階之間的關係。 為了走上n步臺階,只有兩種方法:從n-1步臺階爬1步走到或從n-2步臺階處爬兩步走到。如果f(n)是爬到第n臺階的方法數,則f(n) = f

C語言斐波那契數列的四種實現方式—遞迴陣列佇列

自部落格園轉載: 1.遞迴 效率低,除了最後一個數,每個數都被重複計算若干次 1: //遞迴實現 2: public static int Fib1(int n) 3: { 4: if (n < 3) 5: { 6

用遞迴通項公式三種方法實現斐波那契數列求解

斐波那契數列指的是這樣一個數列:1、1、2、3、5、8、13、21、……    這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n -[(1-√5)/2]^n}(又叫“比內公式”,是用無理數表示有理數的一個範例。)(√5表