Python 內建序列函式
阿新 • • 發佈:2018-12-31
enumerate函式
# 逐個返回序列的(i,value)值
some_list = ['foo', 'bar', 'baz']
for i, value in enumerate(some_list):
print(i, value)
#還可以對映成字典的位置
mapping = dict((v, i) for i, v in enumerate(some_list))
print(mapping)
結果
0 foo
1 bar
2 baz
{'foo': 0, 'bar': 1, 'baz': 2}
sorted函式
可以將任何序列返回為一個新的有序列表
zip函式
可以將多個序列(列表、元組等)中的元素‘配對’
seq1 = [4, 5, 6]
seq2 = [1, 2, 3]
seq3 = zip(seq1, seq2)
seq3 = list(seq3)
print(seq3)
這裡是Python3的寫法,如果是python 2 的寫法,結果就會是這樣<zip object at 0x000001A06E882188>
Reversed函式
a = list(reversed(range(10)))
print(a)
字典empty_dict = {} d1 = {'a': 'somevalue', 'b': [1, 2, 3, 4]} print(d1) #插入一個字典元素 d1[7] = 'an integer' print(d1) #判斷字典中是否存在某個鍵 print('b' in d1) #del刪除鍵值對應的value,pop刪除指定值後會返回一個值 d1[5] = 'some value' d1['dummy'] = 'another value' print(d1) del d1[5] print(d1) ret = d1.pop('dummy') print(ret) #keys()和values()可以用來獲取鍵和值的列表,但是python 得到的是迭代器 print(d1.keys()) print(d1.values()) #update d1.update({'b': 'foo', 'c': '12'}) print(d1)
set集和
兩種建立方式
a = set([1, 2, 3, 3, 2])
b = {1, 2, 3, 4, 3}
print(a)
print(b)
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7, 8}
huo = a | b
yu = a & b
cha = a - b
yihuo = a ^ b
print(huo)
print(yu)
print(cha)
print(yihuo)
結果
{1, 2, 3, 4, 5, 6, 7, 8}
{3, 4, 5}
{1, 2}
{1, 2, 6, 7, 8}
列表推導式
[expr for val in collection if condition]
相當於下面這段for迴圈
result = []
for val in collection:
if condition:
result.append(expr)
舉例如下
strings = ['a', 'as', 'bat', 'car', 'dove']
str1 = [x.upper() for x in strings if len(x) >2]
print(str1)
巢狀列表推導式
求出帶有兩個‘e’的名字
all_data = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'joe'],
['Susie', 'Casey', 'Jill', 'Ana', 'Eva', 'Jennifer', 'Stephanie']]
names_of_interest = []
for names in all_data:
enough_es = [name for name in names if name.count('e') == 2]
names_of_interest.extend(enough_es)
print(names_of_interest)
結果:
['Jefferson', 'Wesley', 'Steven', 'Jennifer', 'Stephanie']
改成如下的巢狀列表推導式
result = [name for names in all_data for name in names if name.count('e') == 2]
print(result)