4 回答

TA貢獻1775條經驗 獲得超11個贊
請記住數組從 0 開始,您可以從
names = ['zero', 'one', 'two', 'three', 'four']
里面的值names并不重要,但從zero幫助開始。
現在您可以看到您想要的是,對于每個名稱,打印它代表的值 ( i),然后2*i + 1和2*i + 2:
zero 1 2
one 3 4
two 5 6
three 7 8
four 9 10
由于里面的值name并不重要,重要的是它們的位置,因此您可以從 開始重新計數one。
這就是我的解決方案。很簡單,只有三行:
names = ['one', 'two', 'three', 'four', 'five']
for i in range (len(names)):
print(names[i], 'x =', 2*i+1, 'y =', 2*i+2)
如果您想保留numbers或進行最小程度的更改,請參閱 Alessandro Artoni 的答案:
numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
names = ('one', 'two', 'three', 'four', 'five')
for i in range (0, len(names)):
x = numbers[i]*2-1
y = numbers[i]*2
print(names[i], 'x=', x, 'y=', y)
根據您的評論,這是輸出到文件的方法:
names = ['one', 'two', 'three', 'four', 'five']
with open('output.txt', 'w') as f:
for i in range (len(names)):
f.write(names[i] + ' x = ' + str(2*i+1) + ' y = ' + str(2*i+2) + '\n')
或者,既然您選擇了 tobias_k 的答案:
numbers = range(1, 11)
names = ('one', 'two', 'three', 'four', 'five')
result = [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]
with open('output.txt', 'w') as f:
for element in result
f.write("%s x=%d y=%d\n" % element)

TA貢獻1871條經驗 獲得超8個贊
您可以使用zip(*[iter(lst)]*n)配方來迭代值對以及zip帶有名稱的值對。(這首先zip看起來有點神秘。基本上它iter從列表中創建一個,然后zips將該迭代的兩個引用放在一起,從而產生連續元素對。)
>>> numbers=(1,2,3,4,5,6,7,8,9,10)
>>> names=('one', 'two', 'three', 'four', 'five')
>>> [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]
[('one', 1, 2),
('two', 3, 4),
('three', 5, 6),
('four', 7, 8),
('five', 9, 10)]
擁有這些元組后,您可以使用格式字符串來打印它們(或將它們寫入帶有 的文件with open("name", "w") as f: for ...: f.write(...))
for t in [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]:
print("%s x=%d y=%d" % t)

TA貢獻1827條經驗 獲得超9個贊
所需的輸出是:
one x=1 y=2
two x=3 y=4
three x=5 y=6
four x=7 y=8
five x=9 y=10
所以我很快把它們放在一起:
result = ""
max_number = 10
names = ['one', 'two', 'three', 'four', 'five']
y = 0
for i in range (1, max_number, 2):
result +='%s x=%d y=%d\n' % (names[y], i, i+1)
y += 1
print(result)
所以基本上我連接每一行并在最后打印所有內容。您也可以邊走邊打印。剩下的就是添加一些驗證以使其穩健:)

TA貢獻1860條經驗 獲得超9個贊
解決您的問題的最小更改是:
numbers=(1,2,3,4,5,6,7,8,9,10)
names=('one', 'two', 'three', 'four', 'five')
for i in range (0, len(names)):
x=numbers[i]
y=numbers[i+1]
print(names[i], 'x=', x, 'y=', y)
我還建議您使用列表“[]”而不是元組“()”。享受!
添加回答
舉報