Python—从其他两个列表中随机生成一个新列表

Python—从其他两个列表中随机生成一个新列表,python,random,Python,Random,我有两个列表,上限和下限,我想用它们作为边界,在这些值之间随机创建一个新列表 LOW HIGH 19.35 45.04 18.09 44.05 17.44 42.07 16.46 41.95 18.38 43.45 20.78 46.04 24.99 49.12 25.22 50.94 24.67 49.32 我正在尝试创建一个新的列表,它的长度为list,但在每个低对和高对之间都有随机值 新列表可能如下所示: NEW LIST 38.26 33.

我有两个列表,上限和下限,我想用它们作为边界,在这些值之间随机创建一个新列表

LOW     HIGH
19.35   45.04
18.09   44.05
17.44   42.07
16.46   41.95
18.38   43.45
20.78   46.04
24.99   49.12
25.22   50.94
24.67   49.32

我正在尝试创建一个新的列表,它的长度为list,但在每个低对和高对之间都有随机值

新列表可能如下所示:

NEW LIST
38.26
33.70
18.47
41.35
36.77
21.95
25.23
29.18
49.32
感谢您的帮助,谢谢

到目前为止,这是我所拥有的,但它并没有降低一行来更新下限和上限:

Low = pd.Series(data['LOW']).values
High = pd.Series(data['HIGH']).values

newlist = []

for i in range(0, 8):
        newlist = random.uniform(Low, High)
示例输出:

[20.23415150413731, 31.21737764031939, 33.39330466412157, 29.23878916462911, 33.23211876295469, 35.20524920370517, 32.21931456613152, 44.07717212042314, 48.56798614652851]

我认为这应该给你你想要的解决方案。下面的代码将低列表和高列表放入自己的列表中,并遍历每个索引,随机选择一个

from random import randint

low = [19.35, 18.09, 17.44, 16.46, 18.38, 20.78, 24.99, 25.22, 24.67]
high = [45.04, 44.05, 42.07, 41.95, 43.45, 46.04, 49.12, 50.94, 49.32]

lists = [low, high]
newlist = []
for i in range(0, len(low)):
    newlist.append(lists[randint(0, 1)][i])
这是我刚刚生成的输出,仅供参考:


[19.35,18.09,42.07,16.46,18.38,46.04,24.99,25.22,49.32]
所有人都欢呼广播的力量

将熊猫作为pd导入
随机输入
将numpy作为np导入
#示例数据
lows=pd系列(np随机均匀(0,50,10))
highs=pd系列(np随机均匀(0,50,10))
nums_arr=随机。均匀(低=低,高=高)
我特别喜欢这个解决方案,因为它直接创建一个系列,不需要转换


关于您的代码的一些评论: 1) 变量名称通常应遵循带有下划线的
小写形式。有关Python样式的更多信息,请参见

2)
Low=pd.系列(数据['Low'])值
高=pd.系列(数据['High'])值
从您向我展示的其余代码中,您已经知道
data
是一个数据帧。从数据帧(e.x:
data['LOW']
)获取列将返回一个序列,因此对
pd.Series()
的调用是多余的。也不清楚为什么要调用
.values()

请记住,不鼓励使用
Series.values
。发件人:

警告:我们建议使用Series.array或Series.to_numpy(),具体取决于您是否需要对基础数据或numpy数组的引用

3)
newlist=[]
对于范围(0,8)内的i:
newlist=random.uniform(低、高)
我真的很难用词来解释这一点
random.uniform
是一个函数,它接受两个数字,并在前两个数字之间产生一个随机浮点数。然而,在本例中,
random.uniform
在两个系列上运行,这要归功于。这就是为什么尽管看起来没有多大意义,但代码实际上并没有产生错误或崩溃

还要注意的是,上面的代码实际上对
newlist
中的结果没有任何作用,
newlist
也完全不依赖于变量
i

我猜你脑子里有这样的想法:

#注意变量名
新列表=[]
对于范围内的i(低尺寸):
curr\u rand\u num=random.uniform(低[i],高[i])
新建列表。追加(当前值)
也可以写成:

new_nums_list=[random.uniform(低[i],高[i]),用于范围内的i(低.size)]
多亏了的力量,我们可以做得更好:

new\u nums\u list=[random.uniform(curr\u low,curr\u high)表示当前低,当前高(low,high)]


还有什么问题吗?:)

这些是普通的Python列表,还是Pandas系列或其他什么?这些是pd.Seriest这是我的一个打字错误,修复了它们是否在数据帧内?更新以显示低和高的初始化,它们不是数据帧,只是没有索引的系列。我相信OP想要生成一个范围为
[a,b]
的随机数,不要选择
a
b
中的任何一个。为什么在打印结果之前调用
str
?也没有列表理解?这是非常有用的,感谢这两个工作代码,但我可能会考虑改进自己的代码。非常感谢。
from random import randint

low = [19.35, 18.09, 17.44, 16.46, 18.38, 20.78, 24.99, 25.22, 24.67]
high = [45.04, 44.05, 42.07, 41.95, 43.45, 46.04, 49.12, 50.94, 49.32]

lists = [low, high]
newlist = []
for i in range(0, len(low)):
    newlist.append(lists[randint(0, 1)][i])