我有以下的數組,(我認爲)的子列表中的那樣:蟒蛇3讀陣列(名單?)到新值
items = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]
我需要把它讀成將來的計算新值。 例如:
item1 = this
size1 = 5
unit1 = cm
item2 = that
size2 = 3
unit2 = mm
...
有可能在未來的陣列超過3項,因此理想地需要某種形式的循環?
我有以下的數組,(我認爲)的子列表中的那樣:蟒蛇3讀陣列(名單?)到新值
items = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]
我需要把它讀成將來的計算新值。 例如:
item1 = this
size1 = 5
unit1 = cm
item2 = that
size2 = 3
unit2 = mm
...
有可能在未來的陣列超過3項,因此理想地需要某種形式的循環?
Python中的數組可以是2種類型 - Lists
& Tuples
。
list
是可變的(即,可以改變元件&如果希望)
tuple
是不可變的(只讀陣列)
list
由[1, 2, 3, 4]
tuple
表示由(1, 2, 3, 4)
因此表示,給定的數組是tuples
的list
!
您可以在元組中嵌套元組,但不能在元組中列表。
這是更Python -
items = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]
found_items = [list(item) for item in items]
for i in range(len(found_items)):
print (found_items[i])
new_value = int(input ("Enter new value: "))
for i in range(len(found_items)):
recalculated_item = new_value * found_items[i][1]
print (recalculated_item)
從上面的代碼輸出(以輸入爲3)
['this', 5, 'cm']
['that', 3, 'mm']
['other', 15, 'mm']
15
9
45
更新:跟進this comment & this answer我已經更新了以上代碼。
也許我需要一種以不同方式編寫原始數據的方法?我可以理解你如何印刷東西,但最終我需要將大小分配給新的整數值並對它們進行計算。 因此,稍後我可以獲得大小x 2並獲得10(例如,其他值爲6和30) –
您可以隨意使用'item,size,unit'變量。我使用'print'來展示如何在循環中使用它們。 –
繼阿希什·帕蒂爾尼丁的答案...
如果有打算在未來三年多的項目,你可以使用星號來解壓的元組的項目。
items = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]
for x in items:
print(*x)
#this 5 cm
#that 3 mm
#other 15 mm
注意:Python 2.7似乎不喜歡print方法中的星號。
更新: 看起來你需要使用定義每個值的元組的屬性名稱元組的第二個列表:
props = [('item1', 'size2', 'unit1'), ('item2', 'size2', 'unit2'), ('item3', 'size3', 'unit3')]
values = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]
for i in range(len(values)):
value = values[i]
prop = props[i]
for j in range(len(item)):
print(prop[j], '=', value[j])
# output
item1 = this
size2 = 5
unit1 = cm
item2 = that
size2 = 3
unit2 = mm
item3 = other
size3 = 15
unit3 = mm
這裏需要說明的是,你需要確保的是,道具列表中的元素與值列表中的元素按順序匹配。
預期的輸出是: 1.程序從文本文件中讀取項目數組。 2.提示用戶輸入新值 3.重新計算陣列項目的大小 我想我需要對數組項目進行索引,然後分配給新值以執行計算? –
我現在最後需要這樣的東西: newvalue = int(input(「Enter new value:」)) newsize2 = size2 * newvalue print(newsize2) –
我已經相應地更新了我的答案。請檢查。 –
請檢查更新後的答案 - http://stackoverflow.com/a/19755361/2689986 –