以下の問題のグラフの書き方をおしえてください！！

> 「for文、range」を用いることで、データ：
```

>     x = [1,2,3,4,5,6,.......496,497,498,499,500]
>     y = [sin(1),sin(2),.............sin(499),sin(500)]
>  
```

>
> matplotlib を用いて折れ線グラフを描け
CC BY-SA 4.0
2021-05-19T13:41:03.413
75953
2021-05-20T01:21:10.980
2021-05-20T01:21:10.980
3060
45405
question
python python3 matplotlib
matplotlibで折れ線グラフを書く方法
質問ですが、なぜforとrangeを使わなきゃいけない？

通常の場合は、下記の通り使えばOK：

```

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.linspace(1,500,num=500,endpoint=True)
    y = np.sin(x)
    plt.figure(figsize=(14,6))
    plt.plot(x, y, '-o')
    plt.show()
    
```

ループでデータを生成して(linspaceを使わず)描く：

```

    x=[]     #listタイプ
    y=[]     #listタイプ
    for i in range(500):
        x1.append(i+1)    #list.append(a) aをlistの最後に加えarrayじゃ無理
        y1.append(np.sin(i+1))
    plt.figure(figsize=(14,6))
    plt.plot(x, y, '-o')
    plt.show()
    
```

pythonはループに弱いから、効率のためできる限り多重ループを回避してね
CC BY-SA 4.0
2021-05-19T14:32:27.783
75954
2021-05-19T15:24:24.400
2021-05-19T15:24:24.400
3068
45407
75953
answer
> 「for文、range」を用いることで

課題の前提条件を遵守するのであれば以下の様に。

```

    from matplotlib import pyplot as plt
    from math import sin
    
    x = list(range(1, 501))
    y = []
    for v in x:
      y.append(sin(v))
    
    plt.plot(x, y)
    plt.show()
    
```

参考までに、Python 3.8 以降であれば以下の様にも書けます。

```

    from matplotlib import pyplot as plt
    from math import sin
    
    plt.plot((x:=list(range(1, 501))), list(map(sin, x)))
    plt.show()
    
```
CC BY-SA 4.0
2021-05-19T14:59:11.167
75955
2021-05-19T14:59:11.167
75953
answer