此if
- elif
简单明了。 index是一维数组,其值仅为0
- 5
。正如您从图片中看到的那样,唯一正确的if
- elif
仅适用于index[i]==0
和index[i]==1
。对于index[i]==5
,应该打印 f
,但结果打印为 d
。出了什么问题?
当前输出:
for i in index:
print(i)
if index[i]==0:
print(" :a")
elif index[i]==1:
print(" :b")
elif index[i]==2:
print(" :c")
elif index[i]==3:
print(" :d")
elif index[i]==4:
print(" :e")
elif index[i]==5:
print(" :f")
答案 0 :(得分:0)
我已经尝试过您的代码,问题与每个循环中的索引和值之间存在混淆的事实有关。
这里,使用enumerate,我可以在每个循环中访问索引和值:
:- use_module(library(lists)).
pivoting(_,[],[],[]).
pivoting((A,B),[(C,D)|T],[(C,D)|L],G):-D>B,pivoting((A,B),T,L,G).
pivoting((A,B),[(C,D)|T],[(C,D)|L],G):-D=B,C>A,pivoting((A,B),T,L,G).
pivoting((A,B),[(C,D)|T],L,[(C,D)|G]):-D<B,pivoting((A,B),T,L,G).
pivoting((A,B),[(C,D)|T],L,[(C,D)|G]):-D=B,C<A,pivoting((A,B),T,L,G).
pivoting((A,B),[(C,D)|T],L,G):-A=C,D=B,pivoting((A,B),T,L,G).
quick_sort(List,Sorted):-q_sort(List,[],Sorted).
q_sort([],Acc,Acc).
q_sort([H|T],Acc,Sorted):-
pivoting(H,T,L1,L2),
q_sort(L1,Acc,Sorted1),q_sort(L2,[H|Sorted1],Sorted).
答案 1 :(得分:0)
您可以通过避免那些使用字典映射到所需值的if
elif
来缩短您的代码:
index = [1, 5, 5, 5, 5, 4, 4, 4, 0]
map_dict = {0: "a", 1: "b", 2: "c", 3: "d", 4: "e", 5: "f"}
for i in index:
print(map_dict.get(i))
# b
# f
# f
# f
# f
# e
# e
# e
# a
修改强>:
要计算输出中每个项目的计数:
from collections import Counter
index = [1, 5, 5, 5, 5, 4, 4, 4, 0]
map_dict = {0: "a", 1: "b", 2: "c", 3: "d", 4: "e", 5: "f"}
lst = []
for i in index:
value = map_dict.get(i)
print(value)
lst.append(value)
print(Counter(lst))