Python內部函式zip使用

SDYTXM發表於2017-11-09
#zip() 函式
'''
zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,
然後返回由這些元組組成的列表。
如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,
利用 * 號操作符,可以將元組解壓為列表。
zip 語法:
zip([iterable, ...]) #可迭代

'''


a=[0,1,2,3,4]
b=[5,6,7,8,9]
c=[10,11,12,13,14,15,16]


zipped1 = zip(a,b)#打包為元組列表
print(zipped1.__next__())#只能取出一組
print(list(zipped1))#可以全部取出


zipped2 = zip(b,c)#元素個數與最短的列表一致
print(zipped2.__next__())
print(list(zipped2))


zipped3 = zip(a,c)
i= zip(*zipped3)#與zip相反,可理解為解壓,返回二維矩陣式
#print(i.__next__())
print(list(i))    #可以全部取出


#案例:
checkio=([ 'X.O', 'XX.', 'XOO']) == 'X' 
checkio=([ 'OO.', 'XOX', 'XOX']) == 'O' 
checkio=([ 'OOX', 'XXO', 'OXX']) == 'D'

def checkio(result):
     rows = result
     cols = map(''.join, zip(*rows))
     diags = map(''.join, zip(*[(r[i], r[2 - i]) for i, r in enumerate(rows)]))
     lines = rows + list(cols) + list(diags)
     return 'X' if ('XXX' in lines) else  'O' if ('OOO' in lines) else 'D'

result = ['OOX','XXO','OXX']
rows = result
for i in zip(*rows):
    print(i)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20985606/viewspace-2147059/,如需轉載,請註明出處,否則將追究法律責任。

相關文章