[英]I have a defined a variable inside a for loop, but when printing it outside of the loop it doesn't print correctly
這是代碼:
count_1 = 0
count_0 = 0
list = ('001111011011','000110001010','011010111111')`
for i in list:
index = 0
y = i[index]
if y == "1":
count_1 = count_1 + 1
if y == "0":
count_0 = count_0 + 1
if count_1 > count_0:
for i in list:
final_after_1 = []
if i[0] == "1":
final_after_1.append(i)
formatted = (','.join(final_after_1))
if count_0 > count_1:
for i in list:
final_after_1 = []
if i[0] == "0":
final_after_1.append(i)
formatted = (','.join(final_after_1))
if count_0 == count_1:
for i in list:
final_after_1 = []
if i[0] == "1":
final_after_1.append(i)
print(final_after_1)
formatted = (','.join(final_after_1))
print(formatted)
(如果這個問題措辭不好,請提前道歉,這是我第一次提出問題)。
除了這個問題,這段代碼運行良好。 它旨在識別列表中每個 12 位數字的第一個索引,然后確定在此 position 中更常見的是 1 還是 0。 然后它會選擇第一個 position 中具有更常見數字的所有數字並將它們添加到列表中。 我想在程序結束時打印這個列表。
我已經定義了一個變量(稱為格式化)等於各種數字的列表。 當我在定義它的循環中打印它時,它會打印應該在列表中的所有數字,如下所示:
當我像上面的代碼一樣在循環之外打印它時,它只返回最終數字:
011010111111
而像這樣在循環中打印它:
if count_0 > count_1:
for i in list:
final_after_1 = []
if i[0] == "0":
final_after_1.append(i)
formatted = (','.join(final_after_1))
print(formatted)
確實返回了這個完整的所需列表:
001111011011
000110001010
011010111111
任何想法為什么會發生這種情況?
在您的循環中,每次迭代都會更新 formatted 的值。 在最后一次迭代之后,它不再更新,最后一個值是最后一個打印語句的 output。
一個更簡單的例子:
for x in range(100):
pass//looping over, x is 0..99
print(x)
這將打印出 99,即變量“x”保存的最后一個值。
可能您的代碼正在為每次迭代更新變量,因此在 for 循環中您需要 append 值而不是覆蓋它們,例如:
a = 0
b = 0
for i in 10:
a = 1
b = b + 1 # using the last value
print(a) # 1
print(b) # 9
首先,您不應該使用“list”作為變量名,因為它是用於實例化列表或 arrays 的內置名稱。 在第二個中,您的代碼重復 3 次只是為了計數,讓我展示一個更好的列表壓縮方法:
l = ('001111011011','000110001010','011010111111')
first_elements = list()
for x in l:
v = x[0] # first element
first_elements.append(int(v))
# [0,0,0]
count_0 = first_elements.count(0)
# count_0 = 3
count_1 = first_elements.count(1)
# count_1 = 0
使用列表壓縮
first_elements = [int(x[0]) for x in l]
# [0,0,0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.