计蒜客(五)Python中的排序和元组

1.简单的排序

  Python中内置了一些用于排序的方法。

numbers = [1, 4, 2, 3, 8, 3, 0]
numbers.sort()
print(numbers)

2.基本排序

刚才的sort没有返回值,而在python中,还是存在有全局的返回值的排序的方法的。

sorted()得到的值是排序后的列表,而不是一个None。

使用sorted的reverse参数(用于标记排序结果的顺序性,将这个参数设置为True会将排序的结果顺序设置为逆序)

numbers = [1, 4, 2, 3, 8, 3, 0]
print(sorted(numbers))
print(sorted(numbers,reverse=True))

结果如右图

3.字典序

   从开头到结尾的字符按照ASCII码进行比较。如a的ASCII码是97,A的ASCII码是65。

4.个性化排序

def china_first(item):
    if item == 'China':
        return 0
    else:
        return len(item)
country = ['jp', 'China', 'USA', 'Thai']
print(sorted(country,key=len))
print(sorted(country,key=china_first))

结果如右图:

第一个排序是根据每个元素的len长度作排序依据的。

5.正确的排序

6.元组是什么

元组(tuple)是一个固定大小的一组元素,比如说(x,y)坐标。元组看起来有点像列表,但是它的大小是固定不变的。

有点像Python中的结构体,不仅因为它的大小是固定的,而且它还可以体现出一定的逻辑性。

   如果一个函数需要返回多个值,就可以以元组的形式被返回。如一个函数要返回一个三维空间的坐标,在Python中比较直接的做法就是返回一个形式如(x,y,z)的元组;当然,同样的形式也可以被用于作为一个反应人的三围的返回值。

   在Python中创建一个元组,只要把你期望放在元组的值用逗号分隔并放在圆括号内即可。

   有时我们会遇到的空元组的表示形式就是简单的一对括号。访问元组内某个元组的方式和访问列表的元素是一直的,[ ] 、len() 、for。。。in 等都可以被同样的用于元组。

tuple=('hi',)

     如果创建一个只有1个元素的元组,则第一个元素的后面需要加一个逗号,如上例。这里的逗号不能省略,这个逗号是为了区分一个正常的括号内放一个元素的这种情况,如果不加这个逗号,有时Python会直接将它等价成一个没有括号的值。

    在接收元组的值的时候,我们也可以通过元组型的变量进行接收。接收后我们可以通过其中的单一变量对返回的多个值中的某一个进行访问。

7.元组的使用

tuple = (1, 2, 'hi')
print(len(tuple))
print(tuple[2])
tuple=(1,2,'bye')
print(tuple)

结果如右

ps:任何一个已经创建的元组中的元素都是不可以被修改的,所以只能重新创建一个元组赋给原来指向元组的变量。

8.用元组做返回值

def plus_one(tuple):
    return tuple[0] + 1, tuple[1] + 1, tuple[2] + 1

t = (1, 4, -1)
(x,y,z)=plus_one(t)
print(x)
print(y,z)

结果

9.交叉排序

题目:输入一行k个用空格分隔开的整数,依次为n1 n2 。。nk。

请将所有下标不能被3但可被2整除的数在这些数字原有位置上进行升序排列,

将余下下标能被3整除的数在这些数字原有的位置上降序排列。

输出包括一行,与输入相对应的若干个整数,为排序后的结果,整数之间用空格分隔。

样例输入:

1 5 4 3 10 7 19

样例输出:

1 3 7 5 10 4 19

代码如下:

a=input().split(' ')
a.insert(0,'0')
num=0
b=[]
c=[]
while num<len(a):
	a[num]=int(a[num])
	if num!=0 and num%2==0 and num%3!=0:
		b.append(a[num])
	elif num%3==0 and num!=0:
		c.append(a[num])
	num+=1

b.sort()
c.sort(reverse=True)
for i in range(len(a)):
    if(i!=0 and i%2==0 and i%3!=0):
        a[i]=b[0]
        del b[0]
    elif i%3==0 and i!=0:
        a[i]=c[0]
        del c[0]
for i in range(1,len(a)):
    if(i==len(a)-1):
        print(a[i],end='')
    else:
        print(a[i],end=' ')
发布了179 篇原创文章 · 获赞 12 · 访问量 6944

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/104110627
今日推荐