首页 > 解决方案 > 在python中循环,不想从循环中得到相同的结果

问题描述

目前我正在学习数据科学,并且真正从零开始我现在正在尝试在 Python 上练习几件事

在这种情况下,我得到一个类别,应该创建一个包

list_category = ['c1','c2','c3','c4','c5','c6','c7','c8','c9','c10']

在这种情况下,我想得到这个期望的结果:

一个。在捆绑包中没有得到相同的结果,例如(c1,c1,c1)
b。一个捆绑包被允许获得相同的两个类别,例如(c1,c2,c1)
c。不允许具有不同顺序的相同结果,例如(c1 - c2 - c3 = c2 - c1 - c3)

我尝试使用此代码,但显然我仍然得到很多相同的结果

list_category = ['c1','c2','c3','c4','c5','c6','c7','c8','c9','c10']
bundling_list = []
for i in list_category:
   category1 = i
   for y in list_category:
       if i != y:
           category2 = y
           for c in list_category:
               if c != y:
                   category3 = c
                   bundling = i + '-' + y + '-' + c
               
               bundling_list.append(bundling)
               
print(bundling_list)

试图谷歌一些,但到目前为止我没有得到我预期的答案,有没有办法解决这个谢谢!

标签: pythonnested-loops

解决方案


只需从 python 导入 random 模块并使用 random.choice 方法从列表中选择一个随机项目。然后通过避免选择的项目创建一个新列表。这样可以从列表中收集 3 个唯一项目。

  • 您也可以简单地从列表中删除使用随机选择的项目,从而避免创建 2 个额外列表。

我认为这可能会对您有所帮助:)

import random
list_category = ['c1','c2','c3','c4','c5','c6','c7','c8','c9','c10']
l2=[]
l3=[]
n1=random.choice(list_category)
for i in list_category:
    if i!=n1:
        l2.append(i)
n2=random.choice(l2)
for i in l2:
    if i!=n2:
        l3.append(i)
n3=random.choice(l3)
bundle="-".join([n1,n2,n3])
print(bundle)

推荐阅读