我試圖撰寫一個 if/else 陳述句檢查我正在使用的 2 個串列是否不共享任何值。如果他們不這樣做,我想回傳一個空串列。我不知道怎么做。每當我在陳述句中添加 if 時,我的代碼會在函式內部列印,并列印出輸入串列項的大約時間或說無效語法。
該程式應該比較 2 個串列,只列印它們在串列中共享的數字,如果它們重復則只列印單個數字。如果輸入了空字串,則退出程式。如果串列不共享數字,則列印一個空串列,例如輸出:[] 這是我目前所擁有的。我還應該使用 return 陳述句而不是 print 嗎?
def mylist(list1,list2):
same_num = []
for i in list1:
if i in list2:
same_num.append(i) #put matching numbers into a list
output = set(same_num) #convert to a set where no 2 thing will be the same
output_list = list(output) #convert back to list for output
print("Output: ", *output_list)
else:
print("Output: ", same_num)
ui1 = input('List 1: ')
if ui1 == "":
print(" ")
else:
ui2 = input('List 2: ')
list1 = list(ui1)
list2 = list(ui2)
mylist(list1, list2)
uj5u.com熱心網友回復:
最簡單的方法是:
def common(xs, ys):
return list(set(xs).intersection(set(ys)))
xs = [...]
ys = [...]
print(common(xs, ys))
uj5u.com熱心網友回復:
正如您已經知道的那樣,您想使用一組來執行此操作。集合僅保留唯一元素并實施更有效的演算法來檢查交叉點。在你的情況下:
def mylist(list1,list2):
res = set(list1).intersection(set(list2))
print("Output: ", *res)
return
uj5u.com熱心網友回復:
一些備注:
- 如果要在輸入為空時退出,則需要在輸入為空時進行回圈。
- 當
input回傳一個字串時,呼叫list()它會產生一個帶有單獨字符的串列。您不想將 '19 25' 分成 ['1', '9', ' ', '2', '5'],所以首先拆分成單詞,然后將這些單詞映射到數字。 - 要獲取唯一值(洗掉重復項),請使用
set. 要獲取兩個串列中共有的值,請使用intersection集合上的方法。
這是它的外觀:
ui1 = input('List 1: (enter to quit)').split()
while ui1:
ui2 = input('List 2: ').split()
list1 = list(map(int, ui1))
list2 = list(map(int, ui2))
result = list(set(list1).intersection(list2))
print(result)
# Again: ...
ui1 = input('List 1: ').split()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/409575.html
標籤:
下一篇:表格,條件格式
