本篇文章给大家谈谈lua的table.sort中出现invalidorderfunctionforsorting,以及luatable.sort原理的知识点,同时本文还将给你拓展$(...).tabl
本篇文章给大家谈谈lua的table.sort 中出现 invalid order function for sorting,以及lua table.sort原理的知识点,同时本文还将给你拓展$(...).tablesorter is not a function问题修复、''sex'' is an invalid keyword argument for this function、Algorithm - Sorting a partially sorted List、C# bubble sort,selection sort,insertion sort等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- lua的table.sort 中出现 invalid order function for sorting(lua table.sort原理)
- $(...).tablesorter is not a function问题修复
- ''sex'' is an invalid keyword argument for this function
- Algorithm - Sorting a partially sorted List
- C# bubble sort,selection sort,insertion sort
lua的table.sort 中出现 invalid order function for sorting(lua table.sort原理)
今天很诡异地遇到这个错误,看意思是排序的比较函数有问题,但自己一开始用各种方式都无法让lua报出这个错,包括给table.sort的第二个参数传入各种稀奇古怪的东西。
后来看到其它论坛里有人也问这问题,那人写了个洗牌程序出这个错了。我想了下,估计是稳定排序和不稳定排序的问题。验证了一下,果然是这样。
原来的比较函数(根据score排序,score相同排lv):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function compFunc(a,b)
local rst =
true
if
not a then
rst =
true
elseif not b then
false
elseif a.score == b.score then
local lv1,lv2 = tonumber(ta.lv),tonumber(tb.lv)
rst = lv1 >= lv2
else
rst = a.score > b.score
end
return
rst
end
|
这个函数如果a,b的score和lv都相同的情况下,交换a,b调用会返回同样的结果,从而导致每次排序出来的结果是不稳定的。
解决方式也很简单,什么都相同的时候就拿一个必定不会相同的唯一标识来排就好了,比如下面的id。修改后函数如下:
lv1 ~= lv2 then
rst = lv1 >= lv2
else
rst = a.id > b.id
end
else
rst = a.score > b.score
end
rst
end
$(...).tablesorter is not a function问题修复
可能原因
1)jquery加载多次,解决方法:chrome调试工具Elements/Network tab页确认jquery请求多次后,删除多余引用。
2)tablesorter.js与其它js文件有冲突。举个栗子,同时引用百度报表插件echarts.js与tablesorter.js,tablesorter.js引用在后,会导致tablesorter方法一直找不到。解决方法1:tablesorter.js最开始引用。
参考:https://github.com/Mottie/tablesorter/issues/1179
''sex'' is an invalid keyword argument for this function
views.py
# -*- coding:utf-8 -*- from django.http import HttpResponseRedirect, HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response, get_object_or_404 from django.contrib.auth.decorators import login_required from django.views.generic import ListView, DetailView from django.contrib.auth.models import User from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from models import * from forms import * import datetime from django.db.models import Q from django.contrib import auth from django.contrib.auth import authenticate from django.core.urlresolvers import reverse ITEMS_PER_PAGE = 15 ##注册函数 def zbvip_reg(request): if request.method == ''POST'': form = Reg_Form(request.POST, request.FILES) if form.is_valid(): user = User.objects.create_user( username = form.cleaned_data[''username''], password = form.cleaned_data[''password1''], email = form.cleaned_data[''email''], sex = form.cleaned_data[''sex''], addr_zz = form.cleaned_data[''addr_zz''], #tximg = form.cleaned_data[''tximg''], ahjs = form.cleaned_data[''ahjs''], ) user.save() user = authenticate(username=form.cleaned_data[''username''], password=form.cleaned_data[''password1'']) #user = authenticate(username=user.username, password=user.password) auth.login(request, user) return HttpResponseRedirect(''/zbvip/reg/ok/'') #return render_to_response(''registration/register_success.html'', {''user'': request.user}) else: return HttpResponse(u''注册用户时发生错误,请返回修改后重新注册!'') else: form = Reg_Form() variables = RequestContext(request, {''form'':form}) return render_to_response(''registration/register.html'', variables) #会员用户注册成功会的函数 def reg_ok(request): return render_to_response(''registration/register_success.html'', {''user'':request.user})
models.py:
# -*- coding:utf-8 -*- from django.db import models from django.contrib import admin from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin class ProfileBase(type): def __new__(cls, name, bases, arrts): module = attrs.pop(''__module__'') parents = [b for b in bases if isinstance(b, ProfileBase)] if parents: fileds = [] for obj_name, obj in attrs.items(): if isinstance(obj, models.Field):fields.append(obj_name) User.add_to_class(obj_name, obj) UserAdmin.fieldsets = list(UserAdmin.fieldsets) UserAdmin.fieldsets.append((name, {''fields'':fields})) return super(ProfileBase, cls).__new__(cls, name, bases, attrs) class ProfileUser(object): __metaclas__ = ProfileBase class MyProfileUser(ProfileUser): SEX_CHOICES = ((u''保密'', u''保密''),(u''男'', u''男''),(u''女'', u''女'')) sex = models.CharField(verbose_name=u''性别'', choices=SEX_CHOICES, max_length=2) addr_zz = models.CharField(max_length=''100'', blank=True) ahjs = models.CharField(max_length=''300'', null=True, blank=True)
reg.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> </head> <body> {% if user.is_authenticated %} 你已经登陆了。点击这里查看你的注册信息。 {% else %} <form method="post" action="" enctype="multipart/form-data"> {% csrf_token %} <table border="1px"width="900px"> <tr> <td>用户名:</td> <td>{{ form.username }} ×[<font color="red">必填选项 - 字符长度要大于4</font>] </td> </tr> <tr> <td>密码:</td> <td>{{ form.password1 }}×[<font color="red">必填选项</font>] </td> </tr> <tr> <td>重复密码:</td> <td>{{ form.password2 }}×[<font color="red">必填选项</font>] </td> </tr> <tr> <td>你的性别:</td> <td>{{ form.sex }} </td> </tr> <tr> <td>电子邮箱:</td> <td>{{ form.email }} *[<font color="red">必填选项</font>] </td> </tr> <tr> <td>居住地</td> <td>{{ form.addr_zz }}-(选填) </td> </tr> <!-- <tr> <td align="right" width="135px">头像</td> <td width="265px">{{ form.tximg }}-(选填)</td> <td width="330px"><div id="nick_nameTip"></div></td> </tr>--> <tr> <td>情况介绍</td> <td>{{ form.ahjs }}-(选填-建议公司或个体商户填写) </td> </tr> </table> <div> <input id="submit" type="submit" value="提 交 注 册"/> <br /> <span>提示:上面红色提示的选项必须填写,其它的可以看情况选填 </span></div> <p></p></form> {% endif %} </body> </html>
在提交注册的时候提示:
Environment: Request Method: POST Request URL: http://127.0.0.1:8000/zbvip/reg/ Django Version: 1.5.1 Python Version: 2.7.4 Installed Applications: (''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.sessions'', ''django.contrib.sites'', ''django.contrib.messages'', ''django.contrib.staticfiles'', ''django.contrib.admin'', ''vipbbs'') Installed Middleware: (''django.middleware.common.CommonMiddleware'', ''django.contrib.sessions.middleware.SessionMiddleware'', ''django.middleware.csrf.CsrfViewMiddleware'', ''django.contrib.auth.middleware.AuthenticationMiddleware'', ''django.contrib.messages.middleware.MessageMiddleware'') Traceback: File "E:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 115. response = callback(request, *callback_args, **callback_kwargs) File "E:\python\zbvip\vipbbs\views.py" in zbvip_reg 33. ahjs = form.cleaned_data[''ahjs''], File "E:\Python27\lib\site-packages\django\contrib\auth\models.py" in create_user 183. last_login=now, date_joined=now, **extra_fields) File "E:\Python27\lib\site-packages\django\db\models\base.py" in __init__ 415. raise TypeError("''%s'' is an invalid keyword argument for this function" % list(kwargs)[0]) Exception Type: TypeError at /zbvip/reg/ Exception Value: ''sex'' is an invalid keyword argument for this function
Algorithm - Sorting a partially sorted List
给定一个list,里面每个元素都是partially sorted的,所谓partially sorted的意思是说,每个元素距离他们sorted好后的位置在一定范围[0,k]内
set i=n-2k;
while i>=0:
sort [i, i+2k] range of elements in List;
Time complexity: (n/k)*(2k*log2k)=O(nlgk)
解释:每次sort 2k个元素其实是保证了第[k, 2k]sort完成,好好想想。
C# bubble sort,selection sort,insertion sort
https://www.cnblogs.com/Fred1987/archive/2020/02/12/12299546.html
static void Main(string[] args)
{
InsertionSortDemo();
Console.ReadLine();
}
static void InsertionSortDemo()
{
Random rnd = new Random();
int[] arr = new int[100];
for (int i = 0; i < 100; i++)
{
arr[i] = rnd.Next(0, 1000);
}
Console.WriteLine("Raw data:");
foreach (var a in arr)
{
Console.Write(a + "\t");
}
InsertionSort(arr);
Console.WriteLine("\n\n\nAfter insertion sort:");
foreach(var a in arr)
{
Console.Write(a + "\t");
}
}
static void InsertionSort(int[] arr)
{
int inner, temp;
for (int outer = 0; outer < arr.Length; outer++)
{
temp = arr[outer];
inner = outer;
while (inner > 0 && arr[inner - 1] >= temp)
{
arr[inner] = arr[inner - 1];
inner--;
}
arr[inner] = temp;
}
}
static void SelectSortDemo()
{
Random rnd = new Random();
int[] arr = new int[100];
for (int i = 0; i < 100; i++)
{
arr[i] = rnd.Next(0, 10000);
}
Console.WriteLine("Raw data:");
foreach (var a in arr)
{
Console.Write(a + "\t");
}
SelectionSort(arr);
Console.WriteLine("\n\n\nAfter selection sort:");
foreach(var a in arr)
{
Console.Write(a + "\t");
}
}
public void SelectSort(int[] arr)
{
int min;
for(int outer=0;outer<=arr.Length;outer++)
{
min = outer;
for(int inner=outer+1;inner<=arr.Length;inner++)
{
if(arr[inner]<arr[min])
{
min = inner;
}
}
if(min!=outer)
{
int temp = arr[min];
arr[min] = arr[outer];
arr[outer] = temp;
}
}
}
static void SelectionSortDemo()
{
Random rnd = new Random();
int[] arr = new int[100];
for (int i = 0; i < 100; i++)
{
arr[i] = rnd.Next(0, 1000);
}
Console.WriteLine("Raw data:");
foreach (var a in arr)
{
Console.Write(a + "\t");
}
int[] selectionArr = SelectionSort(arr);
Console.WriteLine("\n\nSelection sort:");
foreach(var a in selectionArr)
{
Console.Write(a + "\t");
}
}
static int[] SelectionSort(int[] arr)
{
int min = 0;
for(int i=0;i<arr.Length-1;i++)
{
min = i;
for(int j=i+1;j<arr.Length;j++)
{
if(arr[j]<arr[min])
{
min = j;
}
}
if (i != min)
{
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
static void BubbleDemo()
{
Random rnd = new Random();
int[] arr = new int[100];
for(int i=0;i<100;i++)
{
arr[i] = rnd.Next(0, 1000);
}
Console.WriteLine("Raw data:");
foreach(var a in arr)
{
Console.Write(a + "\t");
}
int[] ascArr = BubbleSort(arr, true);
Console.WriteLine("\n\n\nAsc order:");
foreach(var a in ascArr)
{
Console.Write(a + "\t");
}
int[] descArr = BubbleSort(arr, false);
Console.WriteLine("\n\n\nDesc order:");
foreach(var a in descArr)
{
Console.Write(a + "\t");
}
}
static int[] BubbleSort(int[] arr,bool isAsc)
{
if(arr==null && arr.Length==0)
{
return null;
}
for(int i=0;i<arr.Length;i++)
{
for(int j=i+1;j<arr.Length;j++)
{
//Ascending
if(isAsc)
{
if(arr[i]>arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//Descending
else
{
if(arr[i]<arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
return arr;
}
我们今天的关于lua的table.sort 中出现 invalid order function for sorting和lua table.sort原理的分享已经告一段落,感谢您的关注,如果您想了解更多关于$(...).tablesorter is not a function问题修复、''sex'' is an invalid keyword argument for this function、Algorithm - Sorting a partially sorted List、C# bubble sort,selection sort,insertion sort的相关信息,请在本站查询。
本文标签: