python 列表和字符串

Posted bawu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 列表和字符串相关的知识,希望对你有一定的参考价值。

#列表相除、列表相加
import numpy as np
a=[1,2]
#1、得到列表 <class ‘list‘>
b=[i/2 for i in a];print(b)
#2、得到<class ‘numpy.ndarray‘>
b=np.array(a)/2;print(b)

#多个列表加减,用numpy
c=np.array(a)+np.array(b)*2
print(c)

#不同长度数据放到一起,用numpy和pandas都不太好处理
#用list则比较好处理
a=[]
a.append([1,2])
a.append([2,3,4,5,5])
pd.DataFrame(a)

#判断元素个数
#发行pandas和numpy都不好处理
[1,2,3,1,2,‘a‘,‘b‘,‘a‘].count(‘a‘) 得到‘a‘出现个数

 #求两个list差集、交集和并集 http://www.jb51.net/article/56980.htm
 a = [1,2,3]; b = [2,3,4] #想要的结果是[1] [4] [2,3] [1,2,3,4]
 aa=[i for i in a if i not in b] #[1]
 bb=[i for i in b if i not in a] #[4]
 cc=[i for i in a if i in b] #[2,3]
 a.extend(b); a[-1:-1]=b; a[0:0]=b; a[1:1]=b #可以插到不同位置,再去重

 #简单的list去重

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

 a=list(set(a)) #set(a):{1,2,3,4}   a:[1,2,3,4]#python list遍历时同时跟踪正在被处理的元素索引

my_list=[‘a‘,‘b‘,‘c‘]
for idx,val in enumerate(my_list):
  print(idx,val)
#可以再结合Series.index[idx]得到索引名称,用loc[Series.index[idx],columns_name]选取指定位置值

#替换 replace
‘abcd‘.replace(‘a‘,‘x‘) #将‘a‘替换为‘x’ 结果‘xbcd‘

#合并拼接字符串

parts=[‘is‘,‘chicago‘,‘not‘,‘chicago?‘]
‘ ‘.join(parts)
‘,‘,join(parts)
‘‘.join(parts)

#字符串截取
string.split(‘key‘) #string在key地方截为两段

#用index()方法在列表中查找值
spam=[‘hello‘,‘hi‘,‘howdy‘,‘heyas‘]
spam.index(‘hello‘) #0

#append() insert() remove() 是列表方法
#注意得到新的list就是append和insert后的,不用赋值
#列表被当场修改
spam.append(‘moose‘)
spam.insert(1,‘chicken‘)
spam.remove(‘hello‘) #如果该值出现多次,只有第一次出现值会被删除

#sort() 将列表中的值排序
sort()方法当场对列表排序 不能对既有数字又有字符串值的列表排序
sort()方法对字符串排序时, 使用“ASCII 字符顺序”, 而不是实际的字
典顺序。这意味着大写字母排在小写字母之前。因此在排序时, 小写的 a 在大写的
Z 之后。 如果需要按照普通的字典顺序来排序, 就在 sort()方法调用时, 将关键字参数
key 设置为 str.lower

spam.sort(reverse=True)
spam=[‘a‘,‘z‘,‘A‘,‘Z‘]
spam.sort(key=str.lower) #[‘a‘, ‘A‘, ‘z‘, ‘Z‘]

#如果元组中只有一个值, 你可以在括号内该值的后面跟上一个逗号, 表明这种
情况。 否则, Python 将认为, 你只是在一个普通括号内输入了一个值。逗号告诉
Python, 这是一个元组(不像其他编程语言, Python 接受列表或元组中最后表项后
面跟的逗号)。在交互式环境中, 输入以下的 type()函数调用, 看看它们的区别:
>>> type((‘hello‘,))
<class ‘tuple‘>
>>> type((‘hello‘))
<class ‘str‘>

#用 list()和 tuple()函数来转换类型

变量包含对列表值的引用, 而不是列表值本身。但对于字符串和整数值, 变量
就包含了字符串或整数值。在变量必须保存可变数据类型的值时, 例如列表或字典,
Python 就使用引用。对于不可变的数据类型的值, 例如字符串、 整型或元组, Python
变量就保存值本身。
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
>>> spam = [0, 1, 2, 3, 4, 5]
>>> cheese = spam
>>> cheese[1] = ‘Hello!‘
>>> spam
[0, ‘Hello!‘, 2, 3, 4, 5]
>>> cheese
[0, ‘Hello!‘, 2, 3, 4, 5]
Python 提供了名为 copy 的模块, 其中包含 copy()deepcopy()函数
如果要复制的列表中包含了列表, 那就使用 copy.deepcopy()函数来代替。
>>> import copy
>>> spam = [‘A‘, ‘B‘, ‘C‘, ‘D‘]
>>> cheese = copy.copy(spam)
>>> cheese[1] = 42
>>> spam
[‘A‘, ‘B‘, ‘C‘, ‘D‘]
>>> cheese
[‘A‘, 42, ‘C‘, ‘D‘]
#元组不可修改是元组中的元素不可修改,元组变量可以赋值修改
temp=(‘a‘,‘b‘,‘c‘,‘d‘)
temp=temp[:2]+(‘e‘,)+temp[2:] #(‘a‘,‘b‘,‘e‘,‘c‘,‘d‘)

 2.1、表 6-1 转义字符

转义字符 打印为
‘        单引号
"       双引号
       制表符
      换行符
\       倒斜杠

2.2、字符串方法 upper()、 lower()、 isupper()和 islower()

upper()全大写、lower()全小写、isupper() islower() 如果字符串至少有一个字母, 并且所有字母都是大写或小写, isupper()和islower()方法就会相应地返回布尔值 True。否则, 该方法返回 False。

除了 islower()和 isupper(), 还有几个字符串方法,它们的名字以 is 开始。这些
方法返回一个布尔值, 描述了字符串的特点。下面是一些常用的 isX 字符串方法:
? isalpha()返回 True, 如果字符串只包含字母, 并且非空;
? isalnum()返回 True,如果字符串只包含字母和数字,并且非空;
? isdecimal()返回 True,如果字符串只包含数字字符,并且非空;
? isspace()返回 True,如果字符串只包含空格、制表符和换行,并且非空;
? ? istitle()返回 True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。

请注意, 这些方法没有改变字符串本身, 而是返回一个新字符串。如果你希望改
变原来的字符串, 就必须在该字符串上调用 upper()或 lower(), 然后将这个新字符串
赋给保存原来字符串的变量。这就是为什么必须使用 spam = spam.upper(), 才能改变
spam 中的字符串, 而不是仅仅使用 spam.upper()

3、字符串方法 startswith()和 endswith()

如果只需要检查字符串的开始或结束部分是否等于另一个字符串, 而不是整个字符串, 这些方法就可以替代等于操作符==,这很有用。

4、字符串方法 join()和 split()

如果有一个字符串列表, 需要将它们连接起来,成为一个单独的字符串, join()方法就很有用。 join()方法在一个字符串上调用, 参数是一个字符串列表, 返回一个
字符串。返回的字符串由传入的列表中每个字符串连接而成。
split()方法做的事情正好相反:它针对一个字符串调用, 返回一个字符串列表。
‘, ‘.join([‘cats‘, ‘rats‘, ‘bats‘])
‘cats, rats, bats‘
‘My name is Simon‘.split()
[‘My‘, ‘name‘, ‘is‘, ‘Simon‘]

一个常见的 split()用法, 是按照换行符分割多行字符串。在交互式环境中输入
以下代码:
>>> spam = ‘‘‘Dear Alice,
How have you been? I am fine.
There is a container in the fridge
that is labeled "Milk Experiment".
Please do not drink it.
Sincerely,
Bob‘‘‘
>>> spam.split(‘ ‘)
[‘Dear Alice,‘, ‘How have you been? I am fine.‘, ‘There is a container in the
fridge‘, ‘that is labeled "Milk Experiment".‘, ‘‘, ‘Please do not drink it.‘,
‘Sincerely,‘, ‘Bob‘]

5、用 rjust()、 ljust()和 center()方法对齐文本

>>> ‘Hello‘.rjust(10)
‘      Hello‘
>>> ‘Hello‘.rjust(20)
‘                Hello‘
>>> ‘Hello World‘.rjust(20)
‘          Hello World‘
>>> ‘Hello‘.center(20, ‘=‘)
‘=======Hello========’

6、用 strip()、 rstrip()和 lstrip()删除空白字符

>>> spam = ‘   Hello World   ‘
>>> spam.strip()
‘Hello World‘
>>> spam.lstrip()
‘Hello World   ‘
>>> spam.rstrip()
‘   Hello World‘

































































































以上是关于python 列表和字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第26篇):将列表映射成字典

30 段 Python 实用代码

python常用代码

Python代码阅读(第13篇):检测列表中的元素是否都一样

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试