基于索引将多个列表转换为单个列表

时间:2020-08-18 22:30:16

标签: python list indexing

我是python的新手,我正尝试根据索引值将三个不同的列表合并为一个列表,如下例所示: 这三个列表的大小都相同。

A=['ABC', 'PQR', 'MNO']
B=['X', 'Y', 'Z']
C=['1','2','3']***

我想要的输出是 P = [['ABC','X','1'],['PQR','Y','2'],['MNO','Z','3']]

谢谢。

3 个答案:

答案 0 :(得分:1)

以下是将 EditText hostnumber; TextView output; Button submit; ImageView back; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lookup); back = findViewById(R.id.backlearn); hostnumber = findViewById(R.id.hostnumber); output = findViewById(R.id.outputDecimal); submit = findViewById(R.id.submit); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Lookup.this, MainActivity.class); startActivity(intent); } }); submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @SuppressLint("StaticFieldLeak") AsyncTask<String, Void, connection.Result<InetAddress>> task = new AsyncTask<String, Void, connection.Result<InetAddress>>() { // NOTE: this method runs in a background thread, you cannot access the View from here @Override protected connection.Result<InetAddress> doInBackground(String... hostnumber) { connection.Result<InetAddress> result; try { result = new connection.Result.Success(InetAddress.getByName(String.valueOf(hostnumber))); } catch (UnknownHostException e) { e.printStackTrace(); result = new connection.Result.Failure(e); }catch (Exception e) { result = new connection.Result.Failure(e); } return result; } @Override protected void onPostExecute(connection.Result<InetAddress> result) { if (result instanceof connection.Result.Success) { output.setText((CharSequence) ((connection.Result.Success<InetAddress>) result).data); } else if (result instanceof connection.Result.Failure) { Throwable error = ((connection.Result.Failure<InetAddress>) result).error; Toast.makeText(Lookup.this,"Please Check The Address!: " +error, Toast.LENGTH_SHORT).show(); } } }; task.execute(hostnumber.toString()); }; }) ;} } class connection extends Activity { static class Result<T> { static class Success<T> extends Result<T> { public T data; public Success(T data) { this.data = data; } } static class Failure<T> extends Result<T> { public Throwable error; public Failure(Throwable error) { this.error = error; } } } for loop函数一起使用的解决方案:

range()

输出:

A=['ABC', 'PQR', 'MNO']
B=['X', 'Y', 'Z']
C=['1','2','3']

list1=[]
for i in range(len(A)):
    list1.append([A[i],B[i],C[i]])

display(list1)

[['ABC', 'X', '1'], ['PQR', 'Y', '2'], ['MNO', 'Z', '3']] for loop函数一起使用:

zip()

输出:

l=[]
for a,b,c in zip(A,B,C):
    l.append([a,b,c])
    
display(l)

您不想使用[['ABC', 'X', '1'], ['PQR', 'Y', '2'], ['MNO', 'Z', '3']] 吗?

然后这是为您提供的for loop函数:

map()

输出:

result = list(map(lambda a, b, c: [a,b,c] , A, B,C))
display(result)

答案 1 :(得分:1)

我通常使用numpy进行处理,因为它是一个简单的转置,并且可以处理您抛出的尽可能多的列表:

import numpy as np

A = ['ABC', 'PQR', 'MNO']
B = ['X', 'Y', 'Z']
C = ['1', '2', '3']

lists = [A, B, C]
numpy_array = np.array(lists)

transpose = numpy_array.T
transpose_list = transpose.tolist()

print(transpose_list)

答案 2 :(得分:0)

您可以使用列表理解来获得所需的输出;

a=[[x,y,z] for x,y,z in zip(A,B,C)]
print(a)
相关问题