GVKun编程网logo

lua的table.sort 中出现 invalid order function for sorting(lua table.sort原理)

21

本篇文章给大家谈谈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原理)

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。修改后函数如下:

15
16
17
18
19
         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问题修复

$(...).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

''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

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

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 sortinglua 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的相关信息,请在本站查询。

本文标签: