【问题标题】:How to append elements to a list with a loop?如何使用循环将元素附加到列表中?
【发布时间】:2021-10-01 06:06:53
【问题描述】:
import random

count = 1
attack_count = 0
Node_list = ['a','b','c','d','e']
a, b, c, d, e = 1,1,1,1,1
while True:
    value_list = random.sample(range(10, 100), 5) 
    a = value_list[0]
    b = value_list[1]
    c = value_list[2]
    d = value_list[3]
    e = value_list[4]

    print(count, "Round, Values : ", a, b, c, d, e)
    Biggest_N = max(a,b,c,d,e)
    index = value_list.index(Biggest_N) 
    print("Biggest Node:", Node_list[index]) 

    CH_list = []
    for i in range(count):
        CH_list.append(Node_list[index])
    print(CH_list)

    if count >= 10 :
        break
    count += 1

首先,感谢您的帮助 我使用 Python 编写此代码。 在这段代码中,我希望 CH_list 附加最大节点每个计数的元素。 例如,如果最大节点是计数 1 中的 c,则 CH_list 可能会打印 [c] 如果最大节点是计数 2 中的 b,则 CH_list 可能会打印 [c, b] ....

但在我的代码中它不起作用, 如果最大节点是计数 2 中的 b,则 CH_list 打印 [b, b]。

你能告诉我如何解决这个问题吗?

【问题讨论】:

  • 我根本不明白 for 循环的用途,你只有一件事要附加每个 while 循环迭代
  • 它不起作用 不是描述问题的正确方式。您能否提供确切的预期输出:执行结束时CH_list 中应该是什么?
  • 例如count = 5,添加清除CH_List,然后将当前最大索引添加到列表中5次。所以你总是在列表中得到相同的元素。您需要在循环外将 CH_List 设置为 [],然后在循环内添加一个元素。

标签: python list loops


【解决方案1】:
import random

count = 1
CH_list = []
attack_count = 0
Node_list = ['a','b','c','d','e']
a, b, c, d, e = 1,1,1,1,1
while True:
    value_list = random.sample(range(10, 100), 5) 
    a = value_list[0]
    b = value_list[1]
    c = value_list[2]
    d = value_list[3]
    e = value_list[4]

    print(count, "Round, Values : ", a, b, c, d, e)
    Biggest_N = max(a,b,c,d,e)
    index = value_list.index(Biggest_N) 
    print("Biggest Node:", Node_list[index]) 

    

    CH_list.append(Node_list[index])
    print(CH_list)
    
    if count >= 10 :
        break
    count += 1

【讨论】:

  • 非常感谢您的回复。我英语说得不太好。因为这是我第一次在这个网站上提问,我担心我的意图不会被传达。然而,善良的人在这里留下了他们的答案。我感觉得救了。
【解决方案2】:

如果您想要为列表中的每个迭代累积最大节点,则必须在 while 循环之外声明 CH_list。这样列表不会在每次迭代时都重置。

另外,也不需要for 循环,因为它所做的只是将相同的节点count 添加到一个空列表中。

解决办法如下:

import random

count = 1
attack_count = 0
Node_list = ['a','b','c','d','e']
a, b, c, d, e = 1,1,1,1,1
CH_list = [] # Declare list outside loop
while True:
    value_list = random.sample(range(10, 100), 5) 
    a = value_list[0]
    b = value_list[1]
    c = value_list[2]
    d = value_list[3]
    e = value_list[4]

    print(count, "Round, Values : ", a, b, c, d, e)
    Biggest_N = max(a,b,c,d,e)
    index = value_list.index(Biggest_N) 
    print("Biggest Node:", Node_list[index]) 

    CH_list.append(Node_list[index]) # Append biggest node to the list
    print(CH_list)

    if count >= 10 :
        break
    count += 1

【讨论】:

  • 感谢您的友好回复。我想我的问题一定是非常初级的。但我自己无法解决。我会尝试通过您的回答进一步研究。
猜你喜欢
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 2020-11-27
  • 1970-01-01
相关资源
最近更新 更多