1. 程式人生 > >Python 內建序列函式

Python 內建序列函式

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)