python访问列表的第二个元素

时间:2018-07-18 05:36:12

标签: python

当我打印列表时,我会得到这样的信息

[[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]

我想从上面的列表中提取第一个和第二个元素到单独的列表中,以便我可以请plt为我作图。

所以我的结果应该是 [6.0,6.1,6.2 ... 6.8][0.5,1.0,1.5,2.0 , ... .4.5]

我想知道我们是否有比

更干净的解决方案
for sublist in l:
    i=0
    for item in sublist:
       flat_list.append(item)
       break #get first element of each  

7 个答案:

答案 0 :(得分:6)

您可以尝试list indexing

data = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]
d1 = [item[0] for item in data]
print d1
d2 = [item[1] for item in data]
print d2

输出:

[6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8]
[0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]

答案 1 :(得分:3)

我建议使用numpy数组。例如:

import matplotlib.pyplot as plt
import numpy as np

a= np.array([[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]])

plt.plot(a[:,0], a[:,1])
plt.show()

输出: Output

答案 2 :(得分:2)

zip()将提供所需的输出。

xy = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]
x,y = zip(*xy)
print(x)
print(y)

输出:

(6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8)
(0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5)

zip()汇总所有可迭代元素。 zip(x,y)将提供您当前拥有的列表。 zip()*可用于解压缩列表。

此外,无需将元组转换为列表,因为pyplot.plot()采用了array-like参数。

import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()

enter image description here

答案 3 :(得分:2)

尝试一下zip,zip()将使迭代器根据传递的可迭代对象聚合元素,并返回一个元组迭代器,因此map()函数用于使元组列出: / p>

l = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]

a,b = map(list,zip(*l))
print(a,b)

O / P将类似于:

[6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8]  [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]

答案 4 :(得分:1)

使用zip built-inunpacking的单线纸

>>> original = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]
>>> left, right = zip(*original)
>>> left
(6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8)
>>> right
(0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5)

如果您不满意结果是tuple,我们可以简单地使用map built-in将它们变成list

>>> left, right = map(list, zip(*original))
>>> left
[6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8]
>>> right
[0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]

答案 5 :(得分:1)

许多纯Python方法在这里。但是鉴于您的目标是绘制分开的值,因此我认为有必要简化熊猫的工作-只需将列表原样放入数据框和ff

plot()

plot

答案 6 :(得分:1)

l = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]
a,b=list(zip(*l))
print('first elements:',a)
print('second elements:',a)

要绘制:

import matplotlib.pyplot as plt
l = [[6.0, 0.5], [6.1, 1.0], [6.2, 1.5], [6.3, 2.0], [6.4, 2.5], [6.5, 3.0], [6.6, 3.5], [6.7, 4.0], [6.8, 4.5]]
a,b=list(zip(*l))
print('first elements:',a)
print('second elements:',a)
plt.plot(a,b)
plt.show()