我试图使用列表理解来重写我的旧代码,我想知道是否有一种方法可以使用名为" result"的变量。而不是int(round(sorted_l[sorted_l.index(i)] // sorted_l1[sorted_l1.index(i1)]))
在下面的代码中,因为我需要在函数中重用它。
list1 = [2, 4, 6]
list2 = [1, 2, 3]
def a_function(lst, lst1):
sorted_l = sorted(lst)
sorted_l1 = sorted(lst1)
my_list = [int(round(sorted_l[sorted_l.index(i)] // sorted_l1[sorted_l1.index(i1)])) for i in sorted_l for i1 in sorted_l1]
most_common = lst.count()
print my_list
答案 0 :(得分:1)
sorted_l[sorted_l.index(i)]
与i
完全相同。
sorted_l1[sorted_l1.index(i1)]
与i1
完全相同。
你正在进行整数除法,它会截断小数,所以你要舍入什么?
int(round( v1 // v2 ))
话虽如此,所有这些都可以简化为
[int(round(i / i1)) for i in sorted_l for i1 in sorted_l1]
输出
[2, 1, 0, 4, 2, 1, 6, 3, 2]
我想知道是否有办法使用名为“result”的变量
是,将该列表分配给名为result
的变量。
如果你想找到“最常见的”元素,你不能使用列表理解,但你可以这样做
from collections import Counter
result = [int(round(i / i1)) for i in list1 for i1 in list2]
most_common = Counter(result).most_common()[0][0] # 2 occurs most frequently
答案 1 :(得分:0)
我不确定你要做什么,但我写下面的函数与你的函数相当,直到行most_common = lst.count()
无效,正如Chris Rands在评论中指出的那样。
如果你澄清了你实际想要实现的目标,我可以相应地编辑这段代码。
list1 = [2, 4, 6]
list2 = [1, 2, 3]
def a_function(a, b):
sorted_a = sorted(a)
sorted_b = sorted(b)
for element_a in sorted_a:
for element_b in sorted_b:
# Can someone smarter than me let me know if
# anything in this line is redundant?
yield int(round(element_a)) // element_b
print(list(a_function(list1, list2)))
<强>输出强>
[2, 1, 0, 4, 2, 1, 6, 3, 2]