a =[“白”、“1”、“23”、“本田”、“2”、“55”、“福特”、“11”、“88”、“特斯拉”、“15”、“1”、“起亚”、“2”、“3”] B =['福特','本田'] 应返回所有匹配项和列表a中的下一个值 结果-〉[“福特”、“11”、“本田”、“2”]或甚至更好[“福特11”、“本田2”] 我是python新手,需要帮助
GROUP = 3
a = ['bmw', '1', '23', 'honda', '2', '55', 'ford', '11', '88', 'tesla', '15', '1', 'kia', '2', '3']
b = ['ford', 'honda']
c = [f'{a[i]} {a[i+1]}' for i in range(0, len(a)-1, GROUP) if a[i] in b]
print(c)
a = ['bww', '1', 'honda', '2', 'ford', '11', 'tesla', '15', 'nissan', '2']
b = ['ford', 'honda']
res=[]
for check in b:
for index in range(len(a)-1):
if check==a[index]:
res.append(check+" "+a[index+1])
print(res)
输出:-**
['ford 11', 'honda 2']
列出理解**
代码:-**
a = ['bww', '1', 'honda', '2', 'ford', '11', 'tesla', '15', 'nissan', '2']
b = ['ford', 'honda']
res=[check+" "+a[index+1] for check in b for index in range(len(a)-1) if check==a[index]]
print(res) #Same output
4条答案
按热度按时间czfnxgou1#
下面是一个简洁的一行程序,它使用列表解析,一次迭代列表中的2个项(bi-gram),然后使用
.join()
将匹配项与下一个项组合起来解释:
1.可以使用
zip(a, a[1:])
一次迭代列表中的2个项(二元语法),作为大小为2的滚动窗口。1.接下来,可以使用
if i in b
将每个元组(i[k],i[k+1])
中的第一个项i[k]
与列表b
中的元素进行比较1.如果匹配,则可以保留该元组,并使用
' '.join([i,j])
将它们连接成一个字符串。pn9klfpd2#
与其更改数据以适应代码(一些响应者似乎认为这是适当的),不如尝试以下操作:
这里的假设是输入数据以三个一组的形式呈现,但只需要每个三元组中的前两个值。
如果分组假设是错误的,则:
......这将降低效率
kuarbcqp3#
假设所有的都是
string
类型,也假设在list a
中的每个名称后面都会有一个数字。pb3skfrl4#
我希望这对你有帮助