2012-11-16 175 views
0

我有一個小問題,我的Python知識(新手)。 我想要做的事情是輸入變量的字符串列表,然後我需要做一些循環列表並返回列表中的幾個字符串。使用Python輸入列表

問題是我不知道如何向變量輸入列表。

這裏有一個代碼我怎樣努力:

x=[] 
x=(input('Please enter a list of strings: ')) 

...然後我進入['car', 'house', 't-shirt', 'bicycle', 'images']假設x將與字符串列表的變量,但它不是。

請幫助。 Thx!

+2

python version? –

+3

但它是什麼?嘗試'print repr(x)'以便在輸入後查看'x'中的內容。哦,你不必在Python中聲明列表。 'x = []'會被'input('請輸入字符串列表'')覆蓋'' –

+0

我想所有的列表都保存爲一個字符串。當我在x: 打印(i) 打印(i) 返回整個導入列表字符串 –

回答

2

我假設你正在使用python 3.x. 如果你想輸入一個列表,使用input我認爲數據將作爲字符串,即使你在['car', 'house', 't-shirt', 'bicycle', 'images']

鍵入你可以試試這個將數據轉換到一個列表進行處理:

str_x = input('Please enter a list of strings: ')) 
x = [s.strip() for s in str_x[1:-1].split(',')] # String to List conversion 
3

我打算假設你正在使用Python 3(如果這是Python 2代碼,那麼你有問題)。

documentation

輸入(...):...然後,該函數讀取從輸入的線,它 轉換爲字符串(剝離的後換行),並返回。

因此,input()返回一個字符串。不是一個列表或任何東西。

當然,你可以用split()這個逗號字符串和strip()這樣的字符像'['或']'結尾。

+0

錯誤。 'input()'的幫助告訴你:相當於eval(raw_input(提示))。所以它會評估什麼類型爲Python表達式。 – Alfe

+2

@Alfe我倒下了你的downvote。你說的Python 2而埃弗特指定的Python 3 http://stackoverflow.com/questions/4915361/whats-the-difference-between-raw-input-and-input-in-python3-x – Kos

+0

哦,我沒沒有注意到標題中對Python 3的限制。對不起。也許P2和P3之間的區別實際上是問題偶然發生的。 – Alfe

0

這裏是另一種方式來做到這一點:

>>> x=input('Please enter a list of strings: ').split(sep=', ') 
Please enter a list of strings: hi, there, stack, overflow 
>>> print(x) 
['hi', 'there', 'stack', 'overflow'] 

這樣,你讓輸入()做的工作,因爲它需要輸入一個字符串作爲默認值。 .split()返回一個列表,但你總是可以使用

x=list(input(...)) 

以防萬一未來的版本決定返回一個元組。

您也可以更改sep,即您可以只使用逗號而不是逗號和空格,只取決於您自己的風格。