feature-X
我在这里要做的是首先从列表中找到最小的数字。并删除该最小值,然后从列表中再次找到最小的数字。但是删除功能不起作用
答案 0 :(得分:0)
这会找到列表中每个子列表中第二小的子列表:
lst = [[1,2,3,4],[4,5,0,1],[22,21,31,10]]
print([sorted(x)[1] for x in lst])
# [2, 1, 21]
您只需要按升序对子列表进行排序并选择第二个值即可。无需从列表中删除值。
答案 1 :(得分:0)
我个人会使用内置的sorted
函数:
def second_min(x):
result = []
for sublist in x:
result.extend(sublist)
# this flattens the sublists
# into a single list
result = sorted(result)
return result[1]
# return the second element
如果没有内置的,请将sorted()
调用替换为:
...
for i in range(len(result) - 1):
if result[i] > result[i + 1]:
result[i:i + 2] = [result[i + 1], result[i]]
...
答案 2 :(得分:0)
要查找每个子列表的最小值,您可以执行以下操作:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TableViewCell
let dict = array[indexPath.row]
cell.lab.text = dict["name"] as! String
let status:Bool = dict["status"] as! Bool
cell.index = indexPath.row
if(status == true){
cell.btn.setImage(UIImage(named: "checked"), for: .normal)
}else{
cell.btn.setImage(UIImage(named: "unchecked"), for: .normal)
}
cell.delegate = self
return cell
}
答案 3 :(得分:0)
使用min(iterable)
和列表理解来获取整体最小值。
然后在同一列表组合上使用min,但要稍作改动:仅允许第二个列表组合中的值大于最小最小值:
<p:dataTable value="#{yourBean.humans.stream().filter(human -> human.getGender().equals('men')).toList()}" ...>
输出:
xxxx = [[1,2,3,4],[4,5,0,1],[22,21,31,10]]
minmin = min((x for y in xxxx for x in y)) # flattening list comp
secmin = min((x for y in xxxx for x in y if x >minmin))
print(minmin,secmin)
答案 4 :(得分:0)
您可以将给定的数据结构转换为单个列表,然后对列表进行排序。前两个元素为您提供所需的答案。您可以执行以下操作:
input_list = x
new_l = []
for sl in input_list:
new_l.extend(sl)
new_l.sort()
# First two elements of new_l are the ones that you want.
答案 5 :(得分:0)
remove_smallest = [sorted(i)[1:] for i in x]
get_smallest = [min(i) for i in remove_smallest]
print(remove_smallest)
print(get_smallest)
[[2, 3, 4], [1, 4, 5], [21, 22, 31]] [2, 1, 21]
扩展循环:
remove_smallest = []
for i in x:
remove_smallest.append(sorted(i)[1:])
get_smallest = []
for i in remove_smallest:
get_smallest.append(min(i))