簡體   English   中英

從“列表”創建子列表

[英]Creating Sublists from a “List”

我在文件中有一個列表,看起來像這樣

c4a24534,2434b375,e750c718, .... 

我在“,”處分開,並帶了以下清單。

x=
['c4a2', '4534'] 
['2434', 'b375']
['e750', 'c718']

我需要從中列出兩個新清單

i=
'c4a2'
'2434'
'e750'

 q=
'4534'
'b375'
'c718'

我努力了 :

for x in line:
    x = [i.split() for i in x]

這樣我將x分割。這給了我“ i”部分,但是我如何得到其余的“ q”呢?

如果您已閱讀列表列表,請使用zip()將列變成行:

file_result = [
    ['19df', 'b35d']
    ['fafa', 'bbaf']
    ['dce9', 'cf47']
]

a, b = zip(*file_result)

認為您已經解析了文件是理所當然的:

x = [['c4a2', '4534'], ['2434', 'b375'], ['e750', 'c718']]
i = [a[0] for a in x] # ['c4a2', '2434', 'e750']
q = [a[1] for a in x] # ['4534', 'b375', 'c718']

這將獲取每個子列表的第一個和第二個元素,並將其放入新變量中。

假設這是input.txt文件的內容:

c4a24534,2434b375,e750c718

使用zip()分為兩個列表:

with open('input.txt') as f:
    i, q = zip(*((x[:4], x[4:]) for line in f for x in line.split(',')))

print i
print q

印刷品:

('c4a2', '2434', 'e750')
('4534', 'b375', 'c718')

這些是元組 ,如果需要從中創建列表,請在每個元組上調用list()

print list(i)
print list(q)
#!/usr/bin/python
import ast
file = open("file.txt","r")

i = list()
q = list()

for line in file:
    testarray = ast.literal_eval(line)
    q.append(testarray.pop())
    i.append(testarray.pop())

print(i)
print(q)

這樣的事情?

您可以使用zip將列表分為兩個集合。

x=[
['c4a2', '4534'], 
['2434', 'b375'],
['e750', 'c718']
]

i,q = zip(*x)

print i
print q

結果:

('c4a2', '2434', 'e750')
('4534', 'b375', 'c718')

這些是元組。 如果您確實想要列表,則需要對其進行轉換。

i,q = map(list, zip(*x))
#or:
i,q = [list(tup) for tup in zip(*x)]
#or:
i,q = zip(*x)
i, q = list(i), list(q)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM