我创建了名为 Student() 的类,其属性为 name 和 surname。在那个类中,我创建了类变量 -> all_students = []
创建对象时,它会被添加到该类变量 = all_students 中。
如何按属性名称的长度从最长到最短对对象列表进行排序?
import operator
class Student:
all_students = []
def __init__(self, name, surname):
self.name = name
self.surname = surname
Student.all_students.append(self)
s_1 = Student("Jacobbbb", "anything")
s_2 = Student("Mat", "anything1")
s_3 = Student("Marcooooooo", "sss")
new_list = sorted(Student.all_students, key=operator.attrgetter(len('name')))
for student in new_list:
print(student.name)
Run Code Online (Sandbox Code Playgroud)
我试过用运营商,但我不能这样做。将不胜感激的帮助。
假设有一个由数字 1,2,4,3,5,6,7 组成的数组。我想使用堆排序打印 1,3,5,7,2,4,6 。我一直在尝试修改基本的堆排序,但无法获得正确的输出。
你能帮忙吗?
#include<bits/stdc++.h>
using namespace std;
int heapsize;
int make_left(int i)
{
return 2*i;
}
int make_right(int i)
{
return (2*i)+1;
}
void max_heapify(int a[],int i)
{
// cout<<heapsize<<endl;
int largest=i;
// printf("current position of largest is %d and largest is %d\n",largest,a[largest]);
int l=make_left(i);
int r=make_right(i);
// printf("current position of left is %d and left element is %d\n",l,a[l]);
// printf("current position of right is %d and right element is %d\n",r,a[r]);
if(a[l]>=a[largest] && l<=heapsize && a[l]%2!=0)
largest=l; …Run Code Online (Sandbox Code Playgroud) 我有表视图,其中包含诸如“从、到、操作、日期和描述”之类的数据。现在我以字符串格式获取日期,我需要按日期从最新日期到较早日期对消息进行排序,我尝试了排序代码,但它只对前两个字符进行排序。例如:tSFDATE 有字符串“11/01/2010”、“01/02/2010”。结果将是
“01/02/2010”、“11/01/2010”。所以任何按日期对 TrackObj 进行排序的解决方案
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! TrackingTableViewCell
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy - hh:mm:ss"
let sortedArray = self.trackingListArr.sorted { dateFormatter.date(from: $0.tSFDATE!)! < dateFormatter.date(from: $1.tSFDATE!)! }
let trackObj = sortedArray[indexPath.row]
cell.lblFromValue.text = trackObj.fROMUSERAR!
cell.lblToValue.text = trackObj.tOUSERAR!
cell.lblPurpsValue.text = trackObj.tSFPURPOSEAR!
cell.lblDateValue.text = trackObj.tSFDATE!
cell.lblNoteValue.text = trackObj.tSFDESCRIPTION!
return (cell)
}
Run Code Online (Sandbox Code Playgroud)
我正在用 JavaScript 编写递归选择排序。
预期行为:我希望函数selectionSort()按升序对数组中的值进行排序。
问题:我无法摆脱递归,我不知道如何。
错误:
Uncaught RangeError: Maximum call stack size exceeded
const findSmallestIndex = ( arr ) => {
let smallest = arr[0];
let smallestIndex = 0;
let arrLen = arr.length;
for ( let i = 0; i < arrLen; i++ ) {
if ( arr[i] < smallest ) {
smallest = arr[i];
smallestIndex = i;
}
}
return smallestIndex;
};
const selectionSort = ( arr ) => {
let smallest = …Run Code Online (Sandbox Code Playgroud)我已经在我的 Django 项目中安装了 Django Admin Sortable 2。我可以在管理员中看到拖放订单系统,但是当我移动某些对象时,订单不会被保存。移动对象时,我在终端日志中也看不到任何错误。
这是我的模型和管理 python 文件。我需要做任何额外的事情来保存订单吗?
模型.py
class QuickLink(models.Model):
title = models.CharField(max_length=20)
image = models.FileField(null=True, blank=False,upload_to='media/quick_links')
link = models.CharField(max_length=200)
order = models.PositiveIntegerField(default=0, blank=False, null=False)
def __str__(self):
return self.title
class Meta(object):
ordering = ['order']
Run Code Online (Sandbox Code Playgroud)
管理文件
from django.contrib import admin
from adminsortable2.admin import SortableAdminMixin
from .models import QuickLink
@admin.register(QuickLink)
class QuickLinksAdmin(SortableAdminMixin, admin.ModelAdmin):
pass
Run Code Online (Sandbox Code Playgroud)
我的版本如下:
姜戈 2.0.4
Python 3.6.1
Django Admin Sortable 2 0.6.19
我有一个包含许多按特定顺序命名的文本文件的目录:
0.txt
1.txt
2.txt
....
100.txt
101.txt
.....
40000.txt
Run Code Online (Sandbox Code Playgroud)
当我尝试检索我使用的所有文件的排序列表时:
for file in sorted(os.listdir(filepath)):
print(file)
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
0.txt
1.txt
10.txt
100.txt
1000.txt
10000.txt
10001.txt
10002.txt
10003.txt
10004.txt
.....
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,我想要它按正常升序排列:
0.txt
1.txt
2.txt
3.txt
4.txt
...
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
我有这个:
var users = [user1, user2, user3];
var chances = [20, 20, 60];
var total = 100;
var random = Math.floor((Math.random() * total) + 1);
if (random > 40 && random < 100) {
console.log('winner:', users[2]);
}
if (random > 20 && random < 40) {
console.log('winner:', users[1]);
}
if (random > 0 && random < 20) {
console.log('winner:', users[0]);
}
Run Code Online (Sandbox Code Playgroud)
这将为每个用户提供公平的获胜机会。(60 有 60% 的机会,20 有 20% 的机会)。
但我真正需要的是,这是每个(或任何其他)函数的动态。
我的想法的例子:
chances.forEach(function(entry) {
if (unknownValue > unkownValue2 && unknownValue3 < unknownValue4) …Run Code Online (Sandbox Code Playgroud) 我正在使用 C# 和 Visual Studio 制作一个项目。问题是我正在使用我想要排序的 GridView(在这种情况下是 Prototype Code 列),我创建了一个按钮,它执行以下操作:
void SortButton_Click(Object sender, EventArgs e)
{
dataGridView1.Sort(PrototypeCodeDataGridViewTextBoxColumn, System.ComponentModel.ListSortDirection.Ascending);
}
Run Code Online (Sandbox Code Playgroud)
但是在按下按钮的那一刻,我得到了这个:
System.InvalidOperationException: '如果 DataGridView 控件绑定到不支持排序顺序的 IBindingList,则无法对其进行排序。'
我有Prototypes.Datasource,我想这就是我必须改变的东西才能使它可排序,但是如何?我会感谢您的帮助,谢谢!
我有一个正在使用 and 排序的集合sortByDesc('created_at')。当我dd()在返回我的视图之前,它会改变顺序。
但是,一旦我将它传递给我的 vue 组件,它就会改变顺序。
为什么会这样?有没有办法解决这个问题?
所以我有一个需要按值排序的字典。我使用以下 Python3 函数对它们进行排序,该函数将排序后的数据作为元组列表返回。
def sorter(data):
return sorted(data.items(), key=lambda kv: kv[1], reverse=True)
Run Code Online (Sandbox Code Playgroud)
它完美地对数据进行排序,但是当我将此列表转换回字典时
dict(sorter(data))
Run Code Online (Sandbox Code Playgroud)
它会丢失顺序并以完全随机的顺序返回字典。我在这里缺少什么?
sorting ×10
python ×4
algorithm ×2
javascript ×2
arrays ×1
c# ×1
collections ×1
datasource ×1
dictionary ×1
django ×1
django-admin ×1
gridview ×1
heapsort ×1
laravel ×1
laravel-5.6 ×1
percentage ×1
python-3.x ×1
random ×1
recursion ×1
swift ×1
vuejs2 ×1