4

他の回答を見てきましたが、2 つの異なる値を使用しているようです。

コード:

user = ['X', 'Y', 'Z']
info = [['a','b','c',], ['d','e','f'], ['g','h','i']]

for u, g in user, range(len(user)):
    print '|',u,'|',info[g][0],'|',info[g][1],'|',info[g][2],'| \n'

したがって、基本的には、次を出力する必要があります。

'| X | a | b | c |'
'| Y | d | e | f |'
'| z | g | h | i |'

しかし、代わりに、次のエラーが発生します。

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    for u, g in user, range(len(user)):
ValueError: too many values to unpack

私の知る限り、 user と range(len(user)) の両方が同じ値です。

4

4 に答える 4

14
for u,g  in user, range(len(user)):

実際には次と同等です:

for u,g  in (user, range(len(user))):

つまり、タプルです。user最初にリストを返し、次にrange. に存在するアイテムの数user3あり、LHS には 2 つの変数 ( u, b) しかないため、そのエラーが発生します。

>>> u,g = user
Traceback (most recent call last):
  File "<ipython-input-162-022ea4a14c62>", line 1, in <module>
    u,g = user
ValueError: too many values to unpack

ここを探していzipます(手動連結の代わりに文字列フォーマットを使用します):

>>> user = ['X', 'Y', 'Z']
>>> info = [['a','b','c',], ['d','e','f'], ['g','h','i']]
for u, g in zip(user, info):
    print "| {} | {} |".format(u," | ".join(g))
...     
| X | a | b | c |
| Y | d | e | f |
| Z | g | h | i |
于 2013-07-02T13:58:58.587 に答える
1
>>> g = 0
>>> for u in user:
...     print '|',u,'|',info[g][0],'|',info[g][1],'|',info[g][2],'| \n'
...     g=g+1
... 
| X | a | b | c | 

| Y | d | e | f | 

| Z | g | h | i | 
于 2013-07-03T04:54:09.273 に答える
0

次のコードも機能します。

>>> for i in zip(user,info):

    print i[0],'|',

    for x in i[1]:

        print x,'|',

    print

そして、私は出力を取得します:

X | a | b | c |
Y | d | e | f |
Z | g | h | i |

PS:いくつかの答えがあったことは知っていますが、これも結果を得る方法だと思ったので、追加しました!

于 2013-07-03T05:05:22.227 に答える