gpt4 book ai didi

python - 根据条件值创建列表

转载 作者:行者123 更新时间:2023-12-01 06:50:31 25 4
gpt4 key购买 nike

我正在尝试形成几个列表,并根据条件将另一个列表的值排序到每个列表中。

我有以下内容:

b_421, b_521, b_621, b_721, b_821, b_921, b_1021, b_1121, b_1221, b_1321, b_1421, b_1520 = ([] for i in range(12))

for n in x_list:
if n < float(421):
b_421.append(n)
elif float(421) <= n < float(521):
b_521.append(n)
elif float(521) <= n < float(621):
b_621.append(n)
elif float(621) <= n < float(721):
b_721.append(n)
elif float(721) <= n < float(821):
b_821.append(n)
elif float(821) <= n < float(921):
b_921.append(n)
elif float(921) <= n < float(1021):
b_1021.append(n)
elif float(1021) <= n < float(1121):
b_1121.append(n)
elif float(1121) <= n < float(1221):
b_1221.append(n)
elif float(1221) <= n < float(1321):
b_1321.append(n)
elif float(1321) <= n < float(1421):
b_1421.append(n)
elif float(1421) <= n < float(1520):
b_1520.append(n)

但是,我的列表都包含原始列表 x_list 中的所有元素。

我做错了什么?

编辑:

即使我按以下方式定义列表:

b_421=[]
b_521=[]
b_621=[]
b_721=[]
b_821=[]
b_921=[]
b_1021=[]
b_1121=[]
b_1221=[]
b_1321=[]
b_1421=[]
b_1520=[]

我仍然让 b_421 包含原始列表中的所有数字。原始列表是从 pandas dataFrame 列创建的,这可能是问题所在吗?

x_list = df['col1'].tolist()

我得到这个给我想要的输出(即每个列表包含所需范围内的值)的唯一方法是,如果我像上面那样单独定义列表,然后为每个列表创建一个单独的 for, if 组合列表。就这样:

for n in x_list:
if n < float(421):
b_421.append(n)
for n in x_list:
if float(421) <= n < float(521):
b_521.append(n)
for n in x_list:
if float(521) <= n < float(621):
b_621.append(n)
for n in x_list:
if float(621) <= n < float(721):
b_721.append(n)
for n in x_list:
if float(721) <= n < float(821):
b_821.append(n)
for n in x_list:
if float(821) <= n < float(921):
b_921.append(n)
for n in x_list:
if float(921) <= n < float(1021):
b_1021.append(n)
for n in x_list:
if float(1021) <= n < float(1121):
b_1121.append(n)
for n in x_list:
if float(1121) <= n < float(1221):
b_1221.append(n)
for n in x_list:
if float(1221) <= n < float(1321):
b_1321.append(n)
for n in x_list:
if float(1321) <= n < float(1421):
b_1421.append(n)
for n in x_list:
if float(1421) <= n < float(1520):
b_1520.append(n)

这对我来说太疯狂了 - 也许我的环境被破坏了?

最佳答案

代码似乎工作正常。我猜你已经正确定义了列表。这是一个更好的方法:您可以创建一个字典来存储所有列表:

steps = [421, 521, 621, 721, 821, 921, 1021, 1121, 1221, 1321, 1421, 1520]
output = { 'b_' + str(value): [] for value in steps }
steps.insert(0, 0)
ranges = [[steps[i], steps[i + 1]] for i in range(len(steps) - 1)]
for n in x_list:
for range in ranges:
if float(range[0]) <= n < float(range[1]):
output['b_' + str(range[1])].append(n)

这不是最有效的解决方案,因为即使它被添加到列表中它也会运行循环。以下是输入和输出示例:

输入

x_list = [1, 123, 345, 567, 678, 1000]

输出

output = {'b_421': [1, 123, 345], 'b_521': [], 'b_621': [567], 'b_721': [678], 'b_821': [], 'b_921': [], 'b_1021': [1000], 'b_1121': [], 'b_1221': [], 'b_1321': [], 'b_1421': [], 'b_1520': []}

关于python - 根据条件值创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59026486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com