比较 2 个字符串 A 和 B 中的数字
comparing numbers in 2 string A and B
我正在 python 中解决问题。
我有 2 个带数字的字符串,我需要找出字符串 B 中的数字是否位于字符串 A 中。
例如:
a = "5, 7"
b = "6,5"
A 和 B 可以包含任何数字和数量。
如果字符串 B 的数字在 A 中,我希望结果为真或假。
很遗憾,我不知道该怎么做。
如果数字是整数,要获取 True
/ False
条目的列表,对应于 b
中的每个数字是否在 a
中,请尝试:
a = "5, 7"
b = "6,5"
A = [int(x) for x in a.split(',')]
B = [int(x) for x in b.split(',')]
c = [x in A for x in B]
print(c)
输出:
[False, True]
要找出 b
中的任何 个数字是否在 a
中,则:
any(c)
输出:
True
您有字符串,而不是整数,因此您必须先将它们转换为整数:
a_nums = [int(n) for n in a.split(',')]
b_nums = [int(n) for n in b.split(',')]
这使用了 list comprehension to turn each result of a str.split()
method call into integers with the int()
function.
要测试两个序列中是否有数字,您可以使用sets,然后测试是否有交集:
set(a_nums) & set(b_nums)
如果结果不为空,则序列之间存在共享数字。由于非空集 are considered 'true', in Python, you'd convert this to a boolean with bool()
:
bool(set(a_nums) & set(b_nums))
集合是迄今为止测试此类交叉点最有效的方法。
使用生成器表达式和 set.intersection()
method:
,您可以在一行中完成所有这些,而且效率更高一点
bool(set(int(n) for n in a.split(',')).intersection(int(n) for n in b.split(',')))
或者使用 map()
函数可能更紧凑:
bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
演示:
>>> a = "5, 7"
>>> b = "6,5"
>>> bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
True
或稍微分解一下:
>>> [int(n) for n in a.split(',')]
[5, 7]
>>> [int(n) for n in b.split(',')]
[6, 5]
>>> set(map(int, a.split(',')))
set([5, 7])
>>> set(map(int, a.split(','))).intersection(map(int, b.split(',')))
set([5])
>>> bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
True
#This should do the trick
a_ints = [int(i) for i in a.split(',')]
b_ints = [int(i) for i in b.split(',')]
for item in b_ints:
for items in a_ints:
if item==items: return true
return false
我正在 python 中解决问题。
我有 2 个带数字的字符串,我需要找出字符串 B 中的数字是否位于字符串 A 中。
例如:
a = "5, 7"
b = "6,5"
A 和 B 可以包含任何数字和数量。
如果字符串 B 的数字在 A 中,我希望结果为真或假。
很遗憾,我不知道该怎么做。
如果数字是整数,要获取 True
/ False
条目的列表,对应于 b
中的每个数字是否在 a
中,请尝试:
a = "5, 7"
b = "6,5"
A = [int(x) for x in a.split(',')]
B = [int(x) for x in b.split(',')]
c = [x in A for x in B]
print(c)
输出:
[False, True]
要找出 b
中的任何 个数字是否在 a
中,则:
any(c)
输出:
True
您有字符串,而不是整数,因此您必须先将它们转换为整数:
a_nums = [int(n) for n in a.split(',')]
b_nums = [int(n) for n in b.split(',')]
这使用了 list comprehension to turn each result of a str.split()
method call into integers with the int()
function.
要测试两个序列中是否有数字,您可以使用sets,然后测试是否有交集:
set(a_nums) & set(b_nums)
如果结果不为空,则序列之间存在共享数字。由于非空集 are considered 'true', in Python, you'd convert this to a boolean with bool()
:
bool(set(a_nums) & set(b_nums))
集合是迄今为止测试此类交叉点最有效的方法。
使用生成器表达式和 set.intersection()
method:
bool(set(int(n) for n in a.split(',')).intersection(int(n) for n in b.split(',')))
或者使用 map()
函数可能更紧凑:
bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
演示:
>>> a = "5, 7"
>>> b = "6,5"
>>> bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
True
或稍微分解一下:
>>> [int(n) for n in a.split(',')]
[5, 7]
>>> [int(n) for n in b.split(',')]
[6, 5]
>>> set(map(int, a.split(',')))
set([5, 7])
>>> set(map(int, a.split(','))).intersection(map(int, b.split(',')))
set([5])
>>> bool(set(map(int, a.split(','))).intersection(map(int, b.split(','))))
True
#This should do the trick
a_ints = [int(i) for i in a.split(',')]
b_ints = [int(i) for i in b.split(',')]
for item in b_ints:
for items in a_ints:
if item==items: return true
return false