我有這兩個串列:
list_y= ['aaa/bbb/ccc/18_12_13_y_n', 'aaa/bbb/ccc/11_14_13_y_n', 'aaa/bbb/ccc/11_12_14_y_n', 'aaa/bbb/ccc/11_12_16_y_n', 'aaa/bbb/ccc/14_12_13_y_n', 'aaa/bbb/ccc/11_17_13_y_n', 'aaa/bbb/ccc/11_12_19_y_n', 'aaa/bbb/ccc/11_12_13_y_n', 'aaa/bbb/ccc/11_12_17_y_n', 'aaa/bbb/ccc/11_12_18_y_n', 'aaa/bbb/ccc/15_12_13_y_n', 'aaa/bbb/ccc/12_12_13_y_n', 'aaa/bbb/ccc/11_16_13_y_n', 'aaa/bbb/ccc/16_12_13_y_n', 'aaa/bbb/ccc/11_12_15_y_n', 'aaa/bbb/ccc/17_12_13_y_n', 'aaa/bbb/ccc/13_12_13_y_n', 'aaa/bbb/ccc/11_13_13_y_n', 'aaa/bbb/ccc/18_12_13_y_n', 'aaa/bbb/ccc/11_15_13_y_n']
list_x= ['aaa/bbb/ccc/11_12_13_x_n', 'aaa/bbb/ccc/11_13_13_x_n', 'aaa/bbb/ccc/11_14_13_x_n', 'aaa/bbb/ccc/11_17_13_x_n', 'aaa/bbb/ccc/14_12_13_x_n', 'aaa/bbb/ccc/11_12_19_x_n', 'aaa/bbb/ccc/12_12_13_x_n', 'aaa/bbb/ccc/11_12_14_x_n', 'aaa/bbb/ccc/11_16_13_x_n', 'aaa/bbb/ccc/11_12_18_x_n', 'aaa/bbb/ccc/17_12_13_x_n', 'aaa/bbb/ccc/11_12_15_x_n', 'aaa/bbb/ccc/11_12_17_x_n', 'aaa/bbb/ccc/11_15_13_x_n', 'aaa/bbb/ccc/11_12_16_x_n', 'aaa/bbb/ccc/16_12_13_x_n', 'aaa/bbb/ccc/18_12_13_x_n', 'aaa/bbb/ccc/15_12_13_x_n', 'aaa/bbb/ccc/13_12_13_x_n', 'aaa/bbb/ccc/18_12_13_x_n']
我想比較它們是否具有相同的字串(x 或 y 字母除外),然后我想知道 list_x 中的每個字串是否與 list_y 中的對應字串位于相同的位置
這是我嘗試過的:
list_a.sort()
list_b.sort()
list_a[0][0:21] == list_b[0][0:21]
這將回傳 True,因為我正在比較每個字串的前 22 個元素,這很好,但問題是,通過這種方式,我只對串列中的第一個字串進行了比較。如何為整個串列做到這一點?
總結一下我的疑惑:
- 如何比較兩個僅部分匹配的字串串列?
- 我使用 list_a[0][0:21] == list_b[0][0:21] 來比較字串的前 22 個元素,但是有沒有辦法“排除”x 和 y 并比較整個細繩?
謝謝你。
uj5u.com熱心網友回復:
使用 zip 函式和 for 回圈:
for a_string, b_string in zip(list_a, list_b):
if a_string[0:21] == b_string[0:21]:
print("a_string anf b_string are partially identical")
uj5u.com熱心網友回復:
這將測驗兩者并列印兩種條件的結果
list_x.sort()
list_y.sort()
list_x_mod = []
list_y_mod = []
for i in list_x:
list_x_mod.append(i[0:21])
for i in list_y:
list_y_mod.append(i[0:21])
index = 0
while index < len(list_x_mod):
if list_x_mod[index] in list_y_mod:
print("Item", index, "in list_x exist in list_y")
if list_x_mod[index] == list_y_mod[index]:
print("Item", index, "is in same position on both list")
index = 1
即使他們不在同一位置,這也會進行測驗。
uj5u.com熱心網友回復:
我們假設串列的長度是相同的 (len(list_x)==len(list_y)) 并且所有的排序操作都完成了......
變體 1比較沒有 21-s 符號的字串
length_x=len(list_x)
for i in range(0,length_x):
list_x[i][0:21] == list_y[i][0:21] and list_x[i][22:]==list_y[i][22:]
變體 2比較沒有 x 和 y 符號的字串
import re
length_x=len(list_x)
for i in range(0,length_x):
re.sub('[xy]','',list_x[i])==re.sub('[xy]','',list_y[i])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/348925.html
