赞
踩
python可以直接比较字符串内容是否相等,比如
- date_str1 = "2020-02-03"
- date_str2 = "2020-02-03"
-
- if date_str1 == date_str2:
- print("日期字符串相等")
- else:
- print("日期字符串不相等")
如果是字符串列表,可以使用.all函数和.any函数,或者直接使用==运算符,依次比较每一个字符串元素是否相等,若全部相等则输出相等,比如
- #直接使用==
-
- date_str1 = ["2020-02-03","2020-04-09"]
- date_str2 = ["2020-02-03","2020-04-09"]
-
- if date_str1 == date_str2:
- print("列表字符串相等")
- else:
- print("列表字符串不相等")
-
-
- #使用all函数
-
- list1 = [1, 2, 3]
- list2 = [1, 2, 3]
-
- if all(x == y for x, y in zip(list1, list2)):
- print("列表相等")
- else:
- print("列表不相等")
而在numpy的数组也可以直接比较,但返回的是一个bool列表,存储每一个元素是否相等的布尔值,比如
- import numpy as np
-
- date_str1 = np.asarray(['2020-01-01', '2020-02-02', '2020-03-03'])
- date_str2 = np.asarray(['2020-01-01', '2020-02-02', '2020-03-03'])
-
- print(date_str1==date_str2)
输出结果为
注意以上输出为一个布尔数组,而且要求比较的数组维度长度均相等。
但如果只想要返回一个布尔值呢?可以使用numpy中的array_equal函数,如下:
- import numpy as np
-
- date_str1 = ['2020-01-01', '2020-02-02', '2020-03-03']
- date_str2 = ['2020-01-01', '2020-02-02', '2020-03-03']
-
- if np.array_equal(date_str1,date_str2):
- print("列表字符串相等")
- else:
- print("列表字符串不相等")
numpy还提供了很多其他函数,比如array_equiv,char.equal,这些函数大同小异,我觉得记住array_equal就行了
如果想要查找指定字符串在数组或列表中的位置呢?方法是不同的,因为列表和数组不是相同的数据结构
先说在列表中指定数据的方法,可以使用index函数,但要注意确定指定数据是否在列表中,如果没在会引发错误,要么提前确定,要么额外编写处理异常的方法
- my_list = ['apple', 'banana', 'orange', 'apple', 'grape']
- search_str = 'orange'
-
- if search_str in my_list:
- index = my_list.index(search_str)
- print(index) # 输出:2
- else:
- print("字符串不存在于列表中")
此外也可以使用python内置函数enumerate
- my_list = ['apple', 'banana', 'orange', 'apple', 'grape']
- search_str = 'apple'
-
- indices = [index for index, value in enumerate(my_list) if value == search_str]
- print(indices) # 输出:[0, 3]
注意这种方法可以查询到所有与目标字符串相匹配的索引,而且如果没有找到不会引发错误,顶多返回一个空列表,另外说明以下以上方法不仅适用于字符串,也适用于其他类型数据
接下来介绍numpy数组中查询指定数据的方法
这几种方法如下:
- import numpy as np
-
- #条件索引
-
- arr = np.array(['apple', 'banana', 'orange'])
- condition = np.char.find(arr, 'an') != -1
- result = arr[condition]
- print(result)
-
- #where函数
- arr = np.array(['apple', 'banana', 'orange'])
- condition = np.char.find(arr, 'an') != -1
- result = np.where(condition)
- print(arr[result])
-
- #vectorize函数
- arr = np.array(['apple', 'banana', 'orange'])
- condition = np.vectorize(lambda s: 'an' in s)(arr)
- result = arr[condition]
- print(result)
输出结果为:
- ['banana' 'orange']
- ['banana' 'orange']
- ['banana' 'orange']
- [Finished in 284ms]
以上介绍了numpy数组和python列表比较和查找字符串的常用方法,作者水平有限,如有不足,敬请见谅!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。