Python列表、元组和字符串的基本用法整理


方便自己学习和查找,一些最基本的python用法

运算 和 数据类型 和 运行优先级

在这里插入图片描述

在这里插入图片描述

is

查看 id 是否一样

逻辑

在这里插入图片描述

列表

创建

a= [1,2,3,4]

索引

a[2]
a[-1]

切片

a = [1,2,3,4,5,6]

a[0:3] -> [1,2,3]
a[3:6] -> [4,5,6]
a[:3] -> [1,2,3]
a[3:] -> [4,5,6]
a[:] -> [1,2,3,4,5,6]
a[0:6:2] -> [1,3,5]
a[::2] -> [1,3,5]
a[::-1] -> [6,5,4,3,2,1]

增删改查

list = [“a”,“b”,“c”]

list.append(“d”) -> [“a”,“b”,“c”,“d”]
list.extend([“e”,“f”,“h”]) -> [“a”,“b”,“c”,“d”,“e”,“f”,“h”]
list[len(list):] = [“d”] -> [“a”,“b”,“c”,“d”]
list[len(list):] = [“e”,“f”,“h”] -> [“a”,“b”,“c”,“d”,“e”,“f”,“h”]
list.insert(1,“0”) -> [“a”,“0”,“b”,“c”]

list.remove(“b”) -> [“a”,“c”] 多个相同的,删第一个,若不存在则报错
list.pop(1) -> [“a”,“c”]

list.clear() -> []

list[2] = “0” -> [“a”,“b”,“0”]
list[1:] = [“1”,“2”] ->[“a”,“1”,“2”]

nums = [3,1,2]
nums.sort() -> [1,2,3]
nums.reverse() -> [2,1,3]
nums.sort(reverse = True) ->[3,2,1]

nums.count(1) -> 1 统计有几个1
nums.index(2) -> 2 找到2的索引值,只返回第一个
list[list.index(2)] =0 ->[3,1,0]

nums2 = nums.copy() 浅拷贝
nums3 = nums[:] 浅拷贝

+ 和 *

a = [1,2,3]
b = [4,5,6]

c = a+b -> [1,2,3,4,5,6]
c = a * 3 -> [1,2,3,1,3,2,1,2,3]

嵌套 多维数组

matrix =[[1,2,3],[4,5,6],[7,8,9]]

for i in matrix:
    for eacj in i:
        print(each)

matrix[0] = [1,2,3]
matrix[0][0] = 1

A = [0] *3 -> A=[0,0,0]

for i in range(3):
    A[i] = [0]*3

A = [[0,0,0],[0,0,0],[0,0,0]]

浅拷贝和深拷贝

浅拷贝

x = [[0,0,0],[0,0,0],[0,0,0]]
y = x.copy()
x[1][1] = 5

x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,5,0],[0,0,0]]

or

import copy
x = [[0,0,0],[0,0,0],[0,0,0]]
y = copy.copy(x)
x[1][1] = 5

x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,5,0],[0,0,0]]

深拷贝

import copy
x = [[0,0,0],[0,0,0],[0,0,0]]
y = copy.deepcopy(x)
x[1][1] = 5

x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,0,0],[0,0,0]]

列表推导式

a = [1,2,3,4,5]
a = [i *2  for  i  in  a]
a = [i *2  for  i  in  "abc"]
a= [ i for i in range(10) if i%2 ==0]
words =["aaa","abc","ddd","cfd"]
find = [ w for w in words if w[0]=='a']
matrix =[[1,2,3],[4,5,6],[7,8,9]]
flatten = [ col for row in matrix for col in row ]
matrix =[[1,2,3],[4,5,6],[7,8,9]]
flatten = [ col for row in matrix if row[1] == 0 for col in row if col%2 == 0]

元组

元素不能改变的列表
rhyme =(1,2,3,4,5)

可以进行切片

查(不能修改)

nums=(3,4,5,6,1,2,3,6)
nums.count(3) -> 2

+ and *

a= (1,2,3)
b= (4,5,6)

a+b -> (1,2,3,4,5,6)
a*\2 -> (1,2,1,2)

可以当做列表推导式的进行转换

s = (1,2,3)
b = [each*x for in s]

生成只有一个元素的元组

x = (520,)

打包解包

打包
t=(132,“asd”,3.14)
解包
x,y,z = t
a,b,c,d,e =“which”

a,b,*c =“which” -> a =w,b =h,c =ich\

元组和序列

a=([1,2,3],[4,5,6])
元组内若为可修改的成分,则可进行增删改。

字符串

大小写转换

x = “I love You”
x.capitalize() #字符串首字母变大写,其他变小写

->“I love you”
x = “I love You”
x.casefold() #返回所有都是小写的字符串

->“i love you”
x = “I love You”
x.title() #字符串中每个词的首字母变成大写,其他单词都变成小写

->“I Love You”
x = “I love You”
x.swapcase() #大小写反转

->“i lOVE yOU”
x = “I love You”
x.upper() #所有字母都变大写,只能处理英语

->“I LOVE YOU”
x = “I love You”
x.lower() #所有字母都变小写,只能处理英语

->“i love you”

左中右对齐

x= "你好"
x.center(10) #中间对齐

->"    你好    "
x= "你好"
x.ljust(10) #左对齐

->"你好        "
x= "你好"
x.rjust(10) #右对其

->"        你好”
x= "你好"
x.zfill(10) #左填充0

->"00000000你好”
所有左中右对其支持fillchart,自定义占位符

x= "你好"
x.center(10,"+") #左填充0

->"++++你好++++

查找

x = "一二三二一"
x.count("二", 0 , 5 ) #查找个数,起始和末尾位置可省却

-> 2
x = "一二三二一"
x.find("二", 0 , 5 ) #正向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回-1

-> 1
x = "一二三二一"
x.rfind("二", 0 , 5 ) #逆向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回-1

-> 3
x = "一二三二一"
x.index("二", 0 , 5 ) #正向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回error

-> 1

替换

code = """
            print(1)
    print(3)"""
code.expandtabs(4) #使用空格代替tab,一个tab 4个空格

->
code = """
    print(1)
    print(3)"""
    
x = "你是小熊吗?"
x.replace("小熊",“大老虎”) #指定文本进行替换

->"你是大老虎吗?"
table = str.maketrans("ABCDEFG","1234567")
x="Are you sure?"
x.translate(table) #根据表格的转换方法对字符串进行转换

->"1re you sure?"
同上, maketras 还有个参数是屏蔽
table = str.maketrans("ABCDEFG","1234567",“Are”)  #则不转换屏蔽的字段
x="Are you sure?"
x.translate(table) #根据表格的转换方法对字符串进行转换

->"Are you sure?"

判断

x = "我爱python"
x.startswith("我")  #从开头判断匹配字段,可选开始结束位置

-> true
x = "我爱python"
x.endswith("python")  #从末尾判断匹配字段 , 可选开始结束位置

-> true
x = "我爱python"
x.endswith("你""我", "他")  #从末尾判断匹配字段 , 通过元组匹配,右一个满足即可

-> true
x = "I love python"
x.istitle() #判断每个单词的首字母是否为大写

-> False
x = "I love python"
x.isupper() #判断所有的字母为大写

-> False
x = "I love python"
x.isalpha() #判断所有元素为字母

-> False(因为右空格)
x = ""
x.isspace() #判断是否为空白字符串(tab 空格 什么都没有 \n 换行符 都算)

-> True
x = "I love you\n"
x.isprintable() #判断所有元素都可以打印)

-> False(因为\n)
x = "123"
x.isdecimal() #判断所有元素是不是数字
x.isdigit() #判断所有元素是不是数字,可判断2^2
x.isnumeric() #判断所有元素是不是数字,可判断罗马数字,一二等 
x.isalnum()  #判断数字,包括上面三种

-> True
-> True
-> True
x = "test1"
x.isidentifier() #判断字符串为合法的变量名

-> True
import. keword
keyword.iskeyword("if") #判断字符串为python的关键字

-> True

截取

x = "    你好    "
x.lstrip() #左侧不留空白

->"你好    "
x = "    你好    "
x.rstrip() #右侧不留空白

->"    你好"
x = "    你好    "
x.strip() #左右侧不留空白

->"你好"
x = "    你好!!!"
x.strip("!") #含有chart变量,可选择去除内容

->"   你好"
x = "###你好!!!"
x.removeprefix("###")  #去除特定的前缀

->"你好!!!"
x = "###你好!!!"
x.removesurfix("!!!")  #去除特定的后缀

->"###你好"

拆分和拼接

x = "www.baidu.com"
x.partition(".")  #从左到右按分割符分割,只找到第一个分割符处分割

->('www', '.' ,'baidu.com')
x = "www.baidu.com"
x.rpartition(".")  #从右到左按分割符分割, 只找到第一个分割符处分割

->('www.baidu', '.' ,'com')
x = "www.baidu.com"
x.split(".")  #按分隔符进行切割,还有参数分割次数

->['www', 'baidu' ,'com']
x = "www.baidu.com"
x.rsplit(".",1)  #从末端按分隔符进行切割,只切一次

->['www.baidu' ,'com']
x = "www.baidu.com\nasd\n\r你好\r"
x.splitlines()  #按换行符切割 可识别 \n \r\n \r ,若添加参数则可选择是否保留换行符
x.splitlines(True)

->["www.baidu.com","asd","你好"]
->["www.baidu.com\n","asd\n\r","你好\r"]
x = "."
x.join("abc","def","ghi")  #以字符串为分隔符把字符串进行合并

-> ' abc.def.ghi'

格式化

year = 2021
'今年是{}'.format(year)

-> '今年是2021'
year = 2021
month =5
'今年是{1},{0}月'.format(month,year) #可以按下标填写 

-> '今年是2021,5月'
'今年是{year},{month}月'.format(month="2021",year="5") #可以按关键字填写 

-> '今年是2021,5月'
"{:^10}".format(“你好”) #^:格式化居中

-> ''    你好    ”
"{0:>10}{1:<10}".format(“你好”,"不好”) #> or <:格式化左移,右移

-> ''          你好不好          ”
"{:010}".format(520) #0:格式化0填充

-> '' 0000000520
"{:%>10}".format(520) #0:格式化%填充,按需求

-> '' %%%%%%%520

符号选项

只对数字有效

"{:+}{:-}".format(520,-250)

-> '+520 -250'
"{:,}".format(123123123) #千位分隔符

-> '123,123,132'
"{:_}".format(123123123) #千位分隔符,按需求

-> '123_123_132'
"{:.2f}".format(3.1415) #小数点后保留2位精度

-> '3.14'
"{:.2g}".format(3.1415) #小数点左右保留2位精度

-> '3.1'
"{:.3}".format("123456") #截取功能

-> '123'
"{:b}".format(80) #按输出格式输出,种类如下表
"{:#b}".format(80) #按输出格式输出,输出前面加入类型标识,种类如下表

-> '1010000'
-> '0b1010000'

在这里插入图片描述
在这里插入图片描述

"{:.{prec}f}".format(3.1415,prec=2) #按需输出

-> '3.14'

f-字符串

year =2021
f'今年是{year}'  # F 和f 都可

-> '今年是2021'

序列

del

x=[1,2,3] #删除
del x
x=[1,2,3,4,5] #删除
del x[1:3]

-> [1,5]

列表 元组 字符串 转换

list("Ilovey")

-> ['I', 'l', 'o', 'v', 'e', 'y']
tuple("Ilovey")

-> ('I', 'l', 'o', 'v', 'e', 'y')
str([1,2,3,4,5])

-> '[1, 2, 3, 4, 5]'

min() max()

s = [1,2,3,4,5]
min(s)
max(s)

-> 1
-> 5
s = "Fishc"
max(s)

-> s
s = []
max(s,default ="123")

-> 123
max(1,2,3,4,5)

-> 5

len() sum()

len([1,2,3,4,5]) #判断长度,按机器位数右最大值

-> 5
sum([1,2,3,4,5]) #求和

-> 15
sum([1,2,3,4,5],start=100) #求和,从100开始

-> 115

sorted() reveresed()

sorted([2,1,3,4,5]) #排序 ,生成全新列表,并不会影响原列表

-> [1,2,3,4,5]
sorted([2,1,3,4,5],reverse=True) #排序 ,并翻转生成全新列表,并不会影响原列表

-> [5,4,3,2,1]
reveresed([2,1,3,4,5]) #翻转,返回为迭代器
list(reveresed([2,1,3,4,5])) #使用list 把迭代器里的内容提取
-> [5,4,3,2,1]

进制 和 位运算

进制转换

bin():其他进制转二进制
oct():其他进制转八进制
int():其他进制转十进制
hex():其他进制转十六进制

二进制:以“0b”开头
八进制:以“0”开头
十六进制:以“0x”开头

a=10

bin(10)
-> '0b1010'

oct(10)
-> '0o12'

hex(10)
-> '0xa'

位运算

a = 0011 1100
b = 0000 1101
<----------------->
a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011 
a = 0011 
a>>1

-> '001'

a<<1

->'00110'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值