【问题标题】:How create two points for y with the same x?如何用相同的 x 为 y 创建两个点?
【发布时间】:2020-01-28 11:56:03
【问题描述】:

我正在尝试编写一个 python 代码来创建“双点”,其中 x 的一个值会在任何情况下假定 y 的两个值。以下是数据示例:

1;5
2;-2
3;4
4;10.4
5;6

其中第一列 (x) 只是数据位置 (y) 的索引。

将这些数据绘制成 x 和 y,将形成一条直线。

我想要的结果是:

1;5
1;-2
2;-2
2;4
3;4
3;10.4
4;10.4
4;6
5;6

这将生成一个矩形图表。 x 的值有其各自的 y 值,但同一 x 的值也有其 "x + 1" 的 y 值,其余数据也是如此。

我正在尝试做这样的事情,但不成功:

l = [5, -2, 4, 10.4, 6]
m = []
i = 0
i = i+1
for i in range(len(l)):
    m.append(l[i])
    if i < len(l)-1:
        m.append([l[i][0], l[i+1][1]])
    print('{}, {}\n' .format(i, m[i]))

出现的错误是'int' object has no attribute '__getitem__'

我是 python 新手,这是我学习的一部分,所以如果有人可以帮助我并解释我哪里出错了,我将不胜感激。

P.s x 列不是数据的一部分,只是一个索引(例如时间)。并且数据(y列)可以是负数、浮点数……所有类型的数字

【问题讨论】:

  • m.append(l[i+1]) 在第二种情况下

标签: python python-3.x python-2.7 list append


【解决方案1】:

可以使用下面的列表理解来完成

from itertools import chain
ls = [5, -2, 4, 10.4, 6]
list(chain(*([(i,v)]*2 for i, v in enumerate(ls))))[1:]

【讨论】:

    【解决方案2】:

    尝试根据索引匹配每个列表中的项目。例如。 list.index(item):

    y=[5, -2, 4, 10.4, 6]
    x=[i for i in range(len(y)+1) if i!=0]
    
    for item in x:
        for i in y:
            if x.index(item) == y.index(i):
                print('%s;%s' %(item, i))
            if x.index(item)==y.index(i) -1:
                print('%s;%s' %(item, i))
    

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多