格式M = [(a,x),(b,y)]的单独列表为M1 = [a,b]和M2 = [x,y]

mik*_*keP 1 python csv for-loop list

我有一个下面的列表M来自一个外部文件(这是一个很大的列表,实际上,len(M)>10000).

M = [(1,100),(2,200),(3,300),(4,400)]

但是,我想把它分成M1=[1,2,3,4]M2=[100,200,300,400].这是我现在这样做的方式,

M1 = [] 
M2 = [] 
for M1,M2 in M:
  M1.append(M1) 
  M2.append(M2)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种更简单,更有效的方法,一种在Python中使用内置函数的解决方案.

JBe*_*rdo 6

去做就对了:

M1, M2 = zip(*M)
Run Code Online (Sandbox Code Playgroud)

M1和M2将是元组.如果需要,您可以将它们转换为列表:

M1, M2 = map(list, zip(*M))
Run Code Online (Sandbox Code Playgroud)

或者使用genexp:

M1, M2 = (list(i) for i in zip(*M))
Run Code Online (Sandbox Code Playgroud)