【python】基本数据类型(1.1)

承接 【python】基本数据类型(1)

2 牛刀小试

交换变量

一种常规的方法是用一个临时变量

a,b = 5,10
print(a,b)
tmp = a 
a = b
b = tmp
print(a,b)

output

5 10
10 5

python有更简洁的写法

a,b = 5,10
print(a,b)
a,b = b,a
print(a,b)

output

5 10
10 5

判断两个字符串是否 anagram

anagram:相同字母异序词,易位构词,变位词。eg:abc,bca,acb,可以用from collections import Counter

from collections import Counter
str1 = 'abc'
str2 = 'bca'
Counter(str1)==Counter(str2)

output

True

字符串倒转

法一,用 reversed

a = '12345'
for char in reversed(a):
    print(char,end='')

output 54321

法二,a[::-1],列表也同样适用

a = 'i love you'
a [::-1]

output 'uoy evol i'

法三

更多的字符串内置函数请看
Python 字符串

项目文件事先做好归档

来自 分享8点超级有用的Python编程建议

在这里插入图片描述

很多人喜欢直接用绝对路径但如果代码共享给其他人学习或者运行,很多情况下都不能直接跑通,建议使用相对路径

带符号的 16 进制转 10 进制

先把 16 进制转为 10 进制,再转为 2 进制

def jinzhi16_10(str16):
	# 16 进制 to 2进制
    str2 = bin(int(str16, 16))[2:].zfill(4*(len(str16)-2)) # 16-10-2,remove 0b for 2 进制, fill 0 to make one 16 equal to four 2
    sum = 0
    if str2[0] == "1":
        for i in range(1, len(str2)):
            if str2[i] == '0':  # 取反,本来应该是为 1 的时候计算的
                sum += 2**(len(str2)-i-1)
        print('-%d' % (sum+1)) # 加 1,二进制上加 1 和十进制上加 1 结果一样
    else:
        print(int("0b"+str2[1:], 2)) # 二进制转十进制


jinzhi16_10("0xBA")
jinzhi16_10("0x35")

output

-70
53

对于正数,补码就是原码,对于负数,补码等于原码求反后加一的结果。

sys.getsizeof 变量的内存占用

import sys

var1 = 15
list1 = [1,2,3,4,5]

print(sys.getsizeof(var1))
print(sys.getsizeof(list1))

output

28
96

多变量赋值

a,b,*c = [1,2,3,4,5]
print(a,b,c)

output

1 2 [3, 4, 5]

获取数字表 / 字母表

import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)

output

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789

剔除掉字符串中的数字 / 字母

isalpha 借助高阶函数 filter 即可

s = 'a1b2c3d4e5f6g7'
print(list(filter(lambda x:x.isalpha(), 'a1b2c3d4e5f6g7')))
print("".join(list(filter(lambda x:x.isalpha(), 'a1b2c3d4e5f6g7'))))

output

['a', 'b', 'c', 'd', 'e', 'f', 'g']
abcdefg

拓展:剔除掉字符串中的字母

isdigit 借助高阶函数 filter 即可

s = 'a1b2c3d4e5f6g7'
print(list(filter(lambda x:x.isdigit(), 'a1b2c3d4e5f6g7')))
print("".join(list(filter(lambda x:x.isdigit(), 'a1b2c3d4e5f6g7'))))

output

['1', '2', '3', '4', '5', '6', '7']
1234567

A 附录

eval()

直接把字符串当语句执行,太方便了!这样可以通过改变字符串来达到运行不同语句(调用函数,调用其他 py 文件等等)了
在这里插入图片描述
参考:https://www.runoob.com/python/python-func-eval.html

但同时也要考虑其危险性,感兴趣的话可以阅读 Python中eval的强大与危害

exec

比 eval 功能更强大

在这里插入图片描述
来自 Python exec 内置语句

code = """
list1 = [1, 2, 3, 4, 5, 6, 8, 1, 2, 3, 6, 9, 8, 6]

from collections import Counter

print(type(Counter(list1)))
print(Counter(list1))
print(dict(Counter(list1)))
"""

exec(code)

output

<class 'collections.Counter'>
Counter({
    
    6: 3, 1: 2, 2: 2, 3: 2, 8: 2, 4: 1, 5: 1, 9: 1})
{
    
    1: 2, 2: 2, 3: 2, 4: 1, 5: 1, 6: 3, 8: 2, 9: 1}

Note: 更多连载请查看【python】

猜你喜欢

转载自blog.csdn.net/bryant_meng/article/details/120651718
今日推荐