python 3将数组(列表?)读入新值

时间:2013-11-03 16:34:32

标签: arrays list python-3.x

我有以下数组,其中包含(我认为)子列表:

items = [('this', 5, 'cm'), ('that', 3, 'mm'), ('other', 15, 'mm')]

我需要将其读入新值以供将来计算。 例如:

item1 = this
size1 = 5
unit1 = cm

item2 = that
size2 = 3
unit2 = mm
...

未来的数组中可能有3个以上的项目,理想情况下需要某种形式的循环?

2 个答案:

答案 0 :(得分:1)

Python中的数组可以有两种类型 - Lists& Tuples
list是可变的(即你可以随时改变元素) tuple是不可变的(只读数组)

list[1, 2, 3, 4]代表 tuple(1, 2, 3, 4)

表示

因此,给定的数组是list的{​​{1}}! 您可以在元组中嵌套元组,但不能在元组中嵌套列表。

这更像是pythonic -

tuples

以上代码输出(输入为3)

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)

更新:跟进this comment& this answer我已更新上述代码。

答案 1 :(得分:0)

继Ashish Nitin Patil的回答......

如果将来有超过三个项目,您可以使用星号来解包元组中的项目。

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

这里需要注意的是,您需要确保道具列表中的元素与值列表中的元素按顺序匹配。