单独的#34;字母编号列表" (国际象棋地点)分成单独的名单

时间:2014-08-13 01:23:47

标签: python list

只是想知道是否有更多的pythonic方法来完成以下任务:

def safe_pawns(pawns):
    x = []
    y = []
    for i in pawns:
        x += i[0]
        y += i[1]

输入将始终采用({“b4”,“d4”,“f4”,“c3”,“e3”,“g5”,“d2”})的形式。阿尔法第一,数字第二。 我查看了python文档和最接近我能找到的是zip,但是我无法解决如何在这种情况下应用此功能。 非常感谢任何建议。谢谢!

2 个答案:

答案 0 :(得分:4)

>>> records = {"b4", "d4", "f4", "c3", "e3", "g5", "d2"}
>>> x, y = zip(*records)
>>> x
('g', 'f', 'b', 'c', 'd', 'd', 'e')
>>> y
('5', '4', '4', '3', '4', '2', '3')

答案 1 :(得分:3)

一个较短但仍以两个列表结尾的解决方案是x, y = [p[0] for p in pawns], [p[1] for p in pawns]。但是,它确实感觉应该有一些冗余度较低的东西。这也扫描了两次。编辑:sberry' s zip(*pawns)更短,表现更好,非常惯用。忘了那个。