作为刚开始学python的菜鸟,在学习的时候遇到一个问题:
使用一句代码将[1,2,3,4,5,6,7,8,9]变成[(1,2,3),(4,5,6),(7,8,9)] ?
在经过一番度娘和思索后,得到以下两种写法:
1.list(zip([ii for ii in [1,2,3,4,5,6,7,8,9] if ii%3==1],[ii for ii in [1,2,3,4,5,6,7,8,9] if ii%3==2],[ii for ii in [1,2,3,4,5,6,7,8,9] if ii%3==0]))
思路是将列表按对3取余分解成三个列表[1,4,7],[2,5,8],[3,6,9],然后进行zip操作打包为元组的列表。
2.list(zip(*zip([1,2,3,4,5,6,7,8,9][:3],[1,2,3,4,5,6,7,8,9][3:-3],[1,2,3,4,5,6,7,8,9][-3:])))
思路是将原列表按索引先后顺序变成三个列表[1,2,3],[4,5,6],[7,8,9],然后zip打包为元组的列表,再解压,返回二维矩阵式,然后最后再zip打包。
这个问题是不停度娘得到的启发,以此作为一个记录。