2017-07-17 220 views
0

我試圖解決這個問題:如何將字符串列表轉換爲適當的列表?

寫程序,需要兩個列表,並返回包含第一個列表中的所有元素減去兩個列表之間的所有共同元素的列表。

編碼部分非常簡單。那就是:

list1=input() 
list2=input() 

for i in list1: 
    if i in list2: 
    list1.remove(i) 
    else: 
    pass 

print(list1) 

,我在這裏所面臨的問題是,list1list2都是字符串。 以list1=‘[1,2,3,4]’。我需要將list1轉換爲[1,2,3,4]

我試過split()join()方法建議在How to convert list to string 但我失敗了。

如何將'[1,2,3,4]'轉換爲[1,2,3,4]

+0

用於該用途的情況下,大概可以接受的:http://pythoncentral.io/cutting-and-slicing-strings-in-python/ – fdsa

+1

存在回答這[這裏](https://stackoverflow.com/questions/1894269/convert-string-representation-of-list-to-list-in-python)。請在問一個新問題之前搜索你的問題。 –

+0

@ 9.0我很抱歉。我沒有谷歌搜索的問題,但我找不到任何解決方案。我的壞 –

回答

2

你有兩個選擇,你可以加載它作爲json

import json 
json.loads('[1,2,3,4]') 
# [1, 2, 3, 4] 

或者你可以評估與ast.literal_eval

from ast import literal_eval  
literal_eval('[1,2,3,4]') 
# [1, 2, 3, 4] 
+0

感謝您的答案!使用其中一種比另一種有好處嗎? –

+1

'json.loads()'比ast.literal_eval()'(Py3.6)快得多。 – AChampion

+2

他們略有不同。除了剛纔提到的表演側面@AChampion。 json.loads版本對引號的限制較多,例如你不能在值附近引用單引號,因爲json不接受單引號作爲有效的引號字符。所以ast.literal_eval在這裏可能會更普遍一些。 – Psidom

3

評估和演示使用ast模塊,它是安全的字符串的字符串:

import ast 
ast.literal_eval('[1, 2, 3, 4]') 
=> [1, 2, 3, 4] 
+0

「安全」是什麼意思?我不能使用比a​​st.literal_eval()快得多的json.loads()嗎? –

+1

@AaryanDewan安全,而不是使用'eval()',這將是另一個(但不安全)的選項--eval()不會驗證其輸入(可能包含惡意代碼),而literal_eval()會執行。有關詳細信息,請參閱此[post](https://stackoverflow.com/questions/15197673/using-pythons-eval-vs-ast-literal-eval)。 –

-3

我會將它們轉換爲正確的在這種情況下,輸入 你甚至需要使用逗號

list1=list(input()) 
list2=list(input()) 
+0

這會導致一個錯誤。我試過 –

+1

這不起作用,'input()'返回一個字符串,這個列表將包含字符串中的所有字符,而不僅僅是這些值。 ''「'」,「[」,「1」,「,」,...]「不是被查找的東西。 – AChampion

+0

什麼樣?我剛剛嘗試過['1','2','3','4'],這是inpout 1234 – oToMaTiX

相關問題