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

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

2 牛刀小试

多变量赋值

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

output

1 2 [3, 4, 5]

交换变量

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

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

sys.getsizeof 变量的内存占用

import sys

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

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

output

28
96

3 string

【string】判断两个字符串是否 anagram

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

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

output

True

【string】字符串倒转

法一,用 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 字符串

【string】带符号的 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

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

【string】获取数字表 / 字母表

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

output

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789

【string】剔除掉字符串中的数字 / 字母

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

【string】删除指定字符串

string = "ffffffffFirstffffffff"
print(string.rstrip("f"))  # "ffffffffFirst" 删除 string 字符串末尾的指定字符(默认为空格)
print(string.lstrip("f"))  # "Firstffffffff"


string = "this here is a sentence...,,,,aaaaasd"
print(string.rstrip(".,dsa"))  # "this here is a sentence"

【string】检查字符串是否以某个字符开头

my_string = "abcdef"
print(my_string.startswith("b"))  # False

【string】判断字符串是否由字母和数字组成

name = "S3cur3P4ssw0rd"
print(name.isalnum())  # True  检测字符串是否由字母和数字组成。

name = "133"
print(name.isalnum())  # True

name = "1 3 3"
print(name.isalnum())  # True

【string】判断字符串中是否含有中文

def check_chinese(check_str):
    for ch in check_str.encode('utf-8').decode('utf-8'):
        if u'\u4e00' <= ch <= u'\u9fff':
            return True
    return False

【string】判断字符串是否为中文数字

string = "四二六七三"

print(string.isdigit())  # False
print(string.isnumeric())  # True

【string】判断字符串是否为空

print(" ".isspace()) # True
print("  1 ".isspace())  # Fasle

【string】交换字符串大小写

string = "This is just a sentence."
result = string.swapcase()
print(result)  # tHIS IS JUST A SENTENCE.

【string】中文变成拼音

借助 pohan

import pohan
from pohan.pinyin.pinyin import Style

print(pohan.pinyin.han2pinyin("科比布莱恩特", style=Style.NORMAL))  # 不带声调
print(pohan.pinyin.han2pinyin("科比布莱恩特", style=Style.TONE))  # 带声调
print(pohan.pinyin.han2pinyin("科比布莱恩特", style=Style.TONE3))  # 带数字声调

output

[['ke'], ['bi'], ['bu'], ['lai'], ['en'], ['te']]
[['kē'], ['bǐ'], ['bù'], ['lái'], ['ēn'], ['tè']]
[['ke1'], ['bi3'], ['bu4'], ['lai2'], ['en1'], ['te4']]

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}

项目文件事先做好归档

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

在这里插入图片描述

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


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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值