我想输入追加到在2D阵列中的特定位置。任务是输入我自己的数据替换数组中的位置。
#Array
Days = ["Mon 1","Tue 1","Wed 1","Thu 1","Fri 1",
"Mon 2","Tue 2","Wed 2","Thu 2","Fri 2",
"Mon 3","Tue 3","Wed 3" ,"Thu 3","Fri 3",
"Mon 4","Tue 4","Wed 4","Thu 4","Fri 4"]
Route = ["Bus A","Bus B","Bus C","Bus D","Bus E","Bus F"]
#The array in each bus is (Mon 1 - Fri 4 in each bus)
BusData = [[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2], #Bus A
[0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0], #Bus B
[2,0,-1,-1,-2,-2,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1], #Bus C
[1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0], #Bus D
[-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0], #Bus E
[0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5]] #Bus F
例如,我已经输入了一天的路线,并试图使用索引位置来放置它在数组中。
我试图做这样一个解决方案:
#Input values in array
for i in Route: #Finding index of input in array
if Bus == i:
RoutePos = Route.index(i)
for i in Days: #Finding index of input in array
if Day == i:
DayPos = Days.index(i)
DataPos = BusData[RoutePos][DayPos]
BusData.append(DataPos)
print(BusData)
如果有人要我详细说明的问题,让我知道
你多种组合解决方案的一半;这是没有必要的。您只需查找路线和日期指标:
route_pos = Route.index(Bus)
day_pos = Days.index(Day)
BusData.append(BusData[route_pos][day_pos]
不过,我不能肯定这就是你想要的。这个附加一个整数到2D列表,比如:
[[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2], #Bus A
[0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0], #Bus B
[2,0,-1,-1,-2,-2,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1], #Bus C
[1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0], #Bus D
[-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0], #Bus E
[0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5], #Bus F
2 # New element
]
我不知道这是否是合适的,因为也许你需要以列表形式的数据。但如果不是,熊猫将使这微不足道的。
import pandas as pd
# the fourth row had an extra digit, I deleted a zero
df = pd.DataFrame(data=BusData, index=Route, columns=Days)
df=df.T
df.loc['Mon 1', 'Bus B'] = 25
df.loc['Wed 1'] = 100
df.loc[:,'Bus F'] = 999
df
Bus A Bus B Bus C Bus D Bus E Bus F
Mon 1 0 25 2 1 -1 999
Tue 1 0 1 0 0 -1 999
Wed 1 100 100 100 100 100 999
Thu 1 2 0 -1 0 -2 999
Fri 1 2 1 -2 0 -4 999
Mon 2 4 2 -2 0 -10 999
Tue 2 0 0 -3 0 -2 999
Wed 2 3 0 -1 0 0 999
Thu 2 4 0 0 0 0 999
Fri 2 -2 0 0 0 0 999
Mon 3 -5 1 -2 2 0 999
Tue 3 0 0 0 0 1 999
Wed 3 0 0 1 0 2 999
Thu 3 3 0 1 0 -3 999
Fri 3 4 2 1 0 1 999
Mon 4 -1 0 1 0 1 999
Tue 4 8 0 -1 0 3 999
Wed 4 1 1 -1 0 -1 999
Thu 4 1 0 2 0 0 999
Fri 4 -2 0 -1 0 0 999
首先Python使用列表不是数组。要追加到一个列表使用.append的功能,例如:
List_name.append(Insert_data_to_append_here)
你的情况:
BusData.append(BusData[route_pos][day_pos])
代替:
DataPos = BusData[RoutePos][DayPos]
BusData.append(DataPos)
所以因为它使得清洁器被组合成一个线。
由于目前还不清楚你在寻找什么,这个答案假定基础上所作出的澄清,到目前为止有以下三种情况:
Bus
是Route
内完全匹配的字符串输入,Day
是Days
内完全匹配的字符串输入,BusData
在Route
和Days
的相同顺序进行排序。然后,它是这么简单:
route_pos = Route.index(Bus)
day_pos = Days.index(Day)
BusData[route_pos][day_pos] == some_data_to_replace
其中some_data_to_replace
是要替换为特定Bus
和Day
路由信息。
例如:
Bus = input("Enter the exact bus info: ") # e.g. "Bus C"
Day = input("Enter the exact day info: ") # e.g. "Mon 2"
Data = int(input("Enter the route info to replace: ")) # e.g. 99
route_pos = Route.index(Bus) # position 2
day_pos = Days.index(Day) # position 5
BusData[route_pos][day_pos] == some_data_to_replace # "row" 2, "col" 5 is replaced
BusData
# [[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2], # Bus A
# [0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0], # Bus B
# [2,0,-1,-1,-2,99,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1], # Bus C (pos 2) Mon 1 (pos 5) is replaced
# [1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0], # Bus D
# [-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0], # Bus E
# [0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5]] # Bus F