所以我试图将内容列表存储在两个不同的矩阵中,具体取决于我从哪里读取代码。换句话说,我将在这个模式的列表中阅读:
['1', '1', '-1'], ['1', '1', '-1'], ['1', '1', '-1'], [], ['1', '1', '-1'], [],
['1', '2', '-1'], ['1', '2', '-1'], ['1', '2', '-1'], [], ['1', '2', '-1'], [], etc
我想要做的是读取并存储2D阵列中第一个空格之前的所有内容,例如:
inputs[i] = ['1', '1', '-1', '1', '1', '-1', '1', '1', '-1']
inputs[i+1] = ['1', '2', '-1', '1', '2', '-1', '1', '2', '-1']
然后空格后面的下一组数字为:
outputs[i] = ['1', '1', '-1']
outputs[i+1] = ['1', '2', '-1']
在我存储了相应的输出之后,以i + 1的增量重复。
我不一定要硬编码所有内容,因为输入的数量可能不同(即在输出前到达空格之前我可以有4个输入列表)。我试过做一个for循环,如:
l = ['1', '1', '-1'], ['1', '1', '-1'], ['1', '1', '-1'], [], ['1', '1', '-1'], [],
['1', '1', '-1'], ['1', '1', '-1'], ['1', '1', '-1'], [], ['1', '1', '-1'], [], etc
for line in l:
if line != []:
inputs[i].append(line)
else:
outputs[i].append(line.next) # Get that output line
line.next() # To skip the following blank line
我遇到的问题是我不知道在哪里增加i,而且根据我增加的位置,输出和输入不会在同一个索引上。存储这样的东西最好的方法是什么?
答案 0 :(得分:1)
如果我理解正确,您要处理的列表包含这种序列:
private void newb_Click(object sender, EventArgs e) { Button btn = (Button)sender; // textBox1.Text = btn.Text; connection con = new connection(); con.connecting(); // Button b = new Button(); int i = 0; var query = "select itemname,itemcode,price from item_master where itemcode =" + btn.Name; MySqlCommand cmd = new MySqlCommand(query, con.con); while (i < 10) { MySqlDataAdapter sda = new MySqlDataAdapter(); DataTable dt = new DataTable(); sda.SelectCommand = cmd; DataTable dbdataset = new DataTable(); sda.Fill(dbdataset); BindingSource bsource = new BindingSource(); bsource.DataSource = dbdataset; dataGridView1.DataSource = bsource; // MessageBox.Show(btn.Name); i++; } // sda.Update(dbdataset); // =dataGridView1.Rows[0] //// MySqlDataReader mdr; //// mdr = cmd.ExecuteReader(); // while (mdr.Read()) // { //// textBox1.Text = (mdr["itemname"].ToString()); // } } private void textBox1_TextChanged(object sender, EventArgs e) { } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { }
即,由空列表分隔的多组输入和输出。
在迭代传入列表中的项目时。 您可以使用标志变量来跟踪您是否正在处理输入或输出,例如:
inputs empty output empty inputs empty output empty inputs empty output empty inputs empty output empty ...
例如:
inputs = [[]]
outputs = []
input_mode = True
for lst in lists:
if not lst:
if not input_mode:
inputs.append([])
# flip the mode
input_mode = not input_mode
elif input_mode:
# extend last input list
inputs[-1].extend(lst)
else:
outputs.append(lst)
上述实施将产生lists = ['1', '1', '-1'], ['1', '1', '-1'], ['1', '1', '-3'], [], ['1', '1', '-4'], [], ['1', '1', '-1'], ['1', '1', '-1'], ['1', '1', '-7'], [], ['1', '1', '-8']
和inputs
:
outputs
答案 1 :(得分:0)
我想你想做什么。 首先,如果变量i依赖于行的内容(您不能预测哪里增加),最好的方法可能是列表:
input = []
output = []
如果您想在其中存储新值,请使用追加功能:
input.append(aux)
on aux:
isInput = True
aux = []
for line in l:
if line != []:
if isInput:
inputs.append([aux])
isInput = False
else:
outputs.append([aux])
isInput = True
aux = []
else:
aux.append(line.next) # Get that output line
line.next() # To skip the following blank line