Python 列表函数

Posted

技术标签:

【中文标题】Python 列表函数【英文标题】:Python List Function 【发布时间】:2013-06-30 06:20:59 【问题描述】:

我有一个名为 network 的列表,需要使用函数对其进行修改。 该列表包含 100 个元素,其中每个元素随机 +1 或 -1。 必须以某种方式修改此列表,以便每次函数运行时,它都会修改网络副本中的元素。 然后我需要在图表上绘制这些列表。

我的代码如下:

import math
import random
import numpy as np

#Generate network elements
network=[]
for x in range(0,100):
    network.append(random.choice([-1,1]))

#Generate Matrix
matrix=np.ones((100,100))
p=np.random.permutation(100)
matrix[p[:10]]=1
matrix[p[:10]]=-1

#Set diagonal values to zero
matrix[np.diag_indices_from(matrix)]=0

#THIS IS THE FUNCTION THAT WILL BE MODIFYING AN ELEMENT, i, IN NETWORK.
def new_sum(i):
    hi=np.sum(np.dot(matrix[i][:100],network[:100]))
    if hi>0:
        hi==1
    if hi<0:
        hi==-1
    return hi

"""HERE IS WHERE I NEED HELP. I NEED TO HAVE THIS FUNCTION RUN AT RANDOM 
   ON ANY ELEMENT IN NETWORK. WHEN IT RUNS, I NEED TO COPY NETWORK AS A NEW 
   LIST AND HAVE hi REPLACE THE CORRESPONDING INDEX, i, IN THE COPIED LIST. THE 
   PROBLEM IS THAT I NEED TO HAVE THIS FUNCTION RUN 300 TIMES, AND EVERYTIME 
   IT RUNS, I NEED TO COPY NETWORK AS A NEW LIST AND HAVE hi REPLACE THE 
   CORRESPONDING INDEX, i, IN THE COPIED LIST. HERE IS CODE: """

def new_function(value):
    for i in range(0,value):
        new_list=network[:]
        new_sum(i)= x
        new_list[i]=x
        return new_list

def plot_data(ax, data, xval):
    N:len(data)
    uniqdata, idx=np.unique(data, return_inverse=True)
    ax.scatter(np.ones(N)*xval,np.arange(1,N+1),s=50,c=cmap[idx])

cmap = np.array([(1,0,0),(0,1,0)])
fig, ax=plt.subplots

然后我必须绘制需要创建的 300 个列表,其中每个列表是函数 plot_data 中的参数 data。我该怎么做?

【问题讨论】:

请缩小问题的范围。当你提供代码时,它是为了说明你的问题,你会自己解决,而不是让别人代替你做你的工作。 【参考方案1】:

使用 numpy.random.random 你可以从不同的分布中生成你喜欢的任何数组: the documentation

【讨论】:

以上是关于Python 列表函数的主要内容,如果未能解决你的问题,请参考以下文章

python 列表函数

python 列表函数

Python 散列表查询_进入<哈希函数;为结界的世界

Python列表函数&方法

python列表list[ ]及列表函数

Python3.6列表函数&方法