找出二维数组中的数组数

时间:2019-01-11 17:38:12

标签: python arrays

我希望我的程序找出数组workout中的数组数

在此示例中,有4个数组,因此预期输出应为4。 但是我目前正在得到输出449

数组workout如下所示:

[['Cable Crossover', 'Cable Flies', 'Incline Bench Press', 'Incline Chest Press Machine', 'Close Grip Benchpress', 'Overhead Dumbell Extensions'], 
['Dumbell Front Raise', 'Dumbell Overhead Press', 'Barbell Overhead Press', 'Reverse Flies', 'Smith Shoulder Press'], 
['Close Grip Pulldown', 'Half Rep Curls', 'One Arm Cable Pull', 'Upright Row', 'Bent Over Rows', 'Rack Pulls'], 
['Leg Curls', 'Squats', 'Leg Extensions', 'Rear Kicks', 'Calf Raisers']]

我用于生成输出449的代码是这样的:

    workout=user_information[4]
    print (len(workout))

有什么主意为什么我得到这个奇怪的输出以及我需要更改什么才能使输出成为workout内部的数组数(为4)

user_information是一个数组,其中包含用户注册的各种信息。数组中的第4个索引包含为其生成的锻炼。

print (user_information)给出以下输出:

['dominic', 'dominic123', '70`', 'strong', "[['Cable Crossover', 'Cable Flies', 'Incline Bench Press', 'Incline Chest Press Machine', 'Close Grip Benchpress', 'Overhead Dumbell Extensions'], ['Dumbell Front Raise', 'Dumbell Overhead Press', 'Barbell Overhead Press', 'Reverse Flies', 'Smith Shoulder Press'], ['Close Grip Pulldown', 'Half Rep Curls', 'One Arm Cable Pull', 'Upright Row', 'Bent Over Rows', 'Rack Pulls'], ['Leg Curls', 'Squats', 'Leg Extensions', 'Rear Kicks', 'Calf Raisers']]"]

编辑:当workout包含6个数组并输出693时,我对此进行了测试。

1 个答案:

答案 0 :(得分:1)

Python是正确的。你错了。引号使它成为字符串。

info = ['dominic', 'dominic123', '70`', 'strong', "[['Cable Crossover', 'Cable Flies', 'Incline Bench Press', 'Incline Chest Press Machine', 'Close Grip Benchpress', 'Overhead Dumbell Extensions'], ['Dumbell Front Raise', 'Dumbell Overhead Press', 'Barbell Overhead Press', 'Reverse Flies', 'Smith Shoulder Press'], ['Close Grip Pulldown', 'Half Rep Curls', 'One Arm Cable Pull', 'Upright Row', 'Bent Over Rows', 'Rack Pulls'], ['Leg Curls', 'Squats', 'Leg Extensions', 'Rear Kicks', 'Calf Raisers']]"]
workout = info[4]
if 4 != len(workout):
    # what how can this be? It's a list!
    if isinstance(workout, list):
        print 'OMG I found a bug in python!'            
    if isinstance(workout, str):
        print 'Oh crap, there were quotation marks.'
  

糟糕,有引号。

如果您碰巧拥有python2,则可以使用eval将字符串作为python代码执行:

workout_as_list = eval(workout)
print (len(workout_as_list))
  

4

是的,如果是列表,则长度为4,但不是列表。它看起来像一个。您很有可能希望它实际上是一个列表,在这种情况下,代码中会出现一个错误,该错误会生成user_information。