這是代碼:
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 位數字的第一個索引,然后計算在該位置更常見的是 1 還是 0。然后它選擇所有在第一個位置具有更常見數字的數字并將它們添加到串列中。我想在程式結束時列印此串列。
我已經定義了一個變數(稱為格式化)以等于各種數字的串列。當我在定義它的回圈中列印它時,它會列印所有應該在串列中的數字,如下所示:
當我像上面的代碼那樣在回圈之外列印它時,它只回傳最終數字:
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
任何想法為什么會發生這種情況?
uj5u.com熱心網友回復:
在您的回圈中,每次迭代都會更新 formatted 的值。在最后一次迭代之后,它不再更新,最后一個值是最后一個列印陳述句的輸出。
一個更簡單的例子:
for x in range(100):
pass//looping over, x is 0..99
print(x)
這將列印出 99,即變數“x”保存的最后一個值。
uj5u.com熱心網友回復:
可能您的代碼正在為每次迭代更新變數,因此在 for 回圈中您需要附加值而不是覆寫它們,例如:
a = 0
b = 0
for i in 10:
a = 1
b = b 1 # using the last value
print(a) # 1
print(b) # 9
首先,您不應該使用“list”作為變數名,因為它是用于實體化串列或陣列的內置名稱。其次,您的代碼重復 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]
參考資料:list compreenssions , list , list.count
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399447.html
