sort
sorted(names, key=lambda x: x[1], reverse=True)
奇偶各自排序
# 网友的
a[::2] = sorted(a[::2]) # 奇数位置从小到大排序
a[1::2] = sorted(a[1::2]) # 偶数位置从小到大排序
# 我的
length = len(s)
li1 = sorted([s[i] for i in range(0,length,2)])
li2 = sorted([s[i] for i in range(1,length,2)])
s_new = ""
for i in range(length//2):
s_new +=li1[i]
s_new += li2[i]
if length%2:
s_new +=li1[length//2]
补充
hex(int(bin(int(x, 16))[2:].rjust(4, '0')[::-1], 2))[2:].upper()
"""
1. int(x, 16) - 将字符x转成16进制
2. bin(int(x, 16))[2:].rjust(4,'0')[::-1] - 继续将十六进制转成二进制,并去除二进制开头"0b",如果二进制长度小于4,则在前面补0至四位,然后再倒序。
比如bin(int('7', 16))输出0b111,[2:]去除0b后为111,rjust(4,'0')左侧补0则变为0111,[::-1]倒序后变为二进制的1110
# 我的
b = bin(int("0x"+i,base=16))[2:].zfill(4)
字符串乘法
(1)字符串相乘会分为三种不同的情况,第一种就是两个字符串一个里面是只有整数的字符串且没有分隔,而另一个字符串则是包含了其他字符的字符串。如果这两个字符串相乘的话就会出现包含了其他字符的字符串被复制整数多份然后合并起来,示例如下:
a = ’asdasd’
print(a*3)
’asdasdasdasdasdasd’
(2)第二种情况就是两个字符串里面都是数字且没有使用空格、转义字符、符号等进行分割,那么这样的两个字符串就会被当做是数字相乘一样去进行计算。这样的计算被称之为隐式转换,因为计算得出的结果也会变成数字类型,示例如下:
a = ’5’
b = ’6’
print(a*b)
30
(3)第三种情况就是两个字符串之中都不满足以上两个条件,也就是说两个字符串都不是数字或者是有一个字符串不是整数,那么这样的两个字符串相乘的话就会直接报错。因为字符串与字符串相乘其实是依赖了隐式转换,没有数字的话就无法转换。
网友评论