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表