2016-05-18 4 views
2

私はPythonには新しく、2つのリストを1つにまとめると、すでにできました。私はそれらの中にいくつかのものが2つのリストを持っていますが、範囲を決定する数字を入力するようにユーザーに求めています。 私はList1を持っている:A1、A2、A3、A4、A5、A6とList2:B1、B2、B3、B4、B5、B6 私は2完全なリストを表示する方法を知っているが、ユーザが数字「3」を入力すると、ジップは、リスト全体の代わりに、(A1、B1)、(A2、B2)、(A3、B3)のみを表示すべきである。だからここで私が試したものです:Python3:zip in range

a = ["A1", "A2", "A3", "A4", "A5", "A6"] 
b = ["B1", "B2", "B3", "B4", "B5", "B6"] 
c = zip(a,b) 
number = int(input("please enter number")) 
for x in c: 
    print(x[:number]) 

しかし、これは動作しません。私はそれを見ようとしましたが、何も見つかりませんでした。誰かが私を助けることができたら、私はうれしいでしょう。

+1

「enu」を見てみましょう。 merate'関数と 'break'キーワードを使用すると、必要な場所に移動できます。あるいは 'itertools.islice'を見てください。 –

答えて

8

あなたはitertools.islice()zip()の結果をスライスすることができます

>>> from itertools import islice 
>>> list(islice(c, number)) 
[('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')] 
3

あなたはここにforループを必要としない - あなただけが一度やろうとしている操作を行う必要があります。また、zipによって返されるジェネレータオブジェクトは、「[]を使用してアクセス」することができないため、最初にlistを使用してリストに変換する必要があります。

ここで働くいくつか変更されたコードです:使用方法と出力の

a = ["A1", "A2", "A3", "A4", "A5", "A6"] 
b = ["B1", "B2", "B3", "B4", "B5", "B6"] 
c = list(zip(a,b)) 
number = int(input("please enter number")) 
print(c[:number]) 

例:

please enter number 3 
[('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')] 
3

を疑問に、プリントを使用する場合:あなたが見ることができるように

>>> a = ["A1", "A2", "A3", "A4", "A5", "A6"] 
>>> b = ["B1", "B2", "B3", "B4", "B5", "B6"] 
>>> c = zip(a,b) 
>>> number = 3 
>>> for x in c: 
... print(x) 
... 
('A1', 'B1') 
('A2', 'B2') 
('A3', 'B3') 
('A4', 'B4') 
('A5', 'B5') 
('A6', 'B6') 

は、 xはペアなので、x[:number]numberの最初のアイテムのみを表示しますsのペア。

あなたが実際にやりたいことはnumber最初のペアを示している:

>>> c = list(zip(a,b)) 
>>> print(c[:3]) 
[('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')] 

を(の添字ないようzipオブジェクトので、私はzip()によって返された値にlist()を使用していることに注意してください)

あなたの場合

>>> for x in c[:3]: 
...  print(x) 
... 
('A1', 'B1') 
('A2', 'B2') 
('A3', 'B3')