簡體   English   中英

如果條件存在則Python附加1以列出所有其他列表,並附加0

[英]Python append 1 to list if condition exist and 0 to all other lists

我有3個列表:

a_exist = []
b_exist = []
c_exist = []

我正在循環一個主要的字符串列表:

l = ['a', 'b']

for item in l:

    if 'a' in item:

        a_exist.append(1)
        b_exist.append(0)
        c_exist.append(0)

    else:

        a_exist.append(0)
        b_exist.append(0)
        c_exist.append(0)

    if 'b' in item:

        b_exist.append(1)
        a_exist.append(0)
        c_exist.append(0)

    else:

        b_exist.append(0)
        a_exist.append(0)
        c_exist.append(0)

我想要得到的:

a_exist = [1,0]
b_exist = [0,1]
c_exist = [0,0]

有沒有更好的方法呢?

l = ['a', 'b']
a_exist = [1 if 'a' in i else 0 for i in l]
c_exist = [1 if 'b' in i else 0 for i in l]
b_exist = [1 if 'c' in i else 0 for i in l]
print(a_exist, b_exist, c_exist, sep='\n')

出:

[1, 0]
[0, 1]
[0, 0]

只需將列表理解條件賦值結合起來。 首先遍歷l並獲取每個值,然后檢查值是否與條件匹配,如果值匹配,則返回1,否則返回0

作為替代方案,您的問題聽起來似乎更適合列表字典。 這使得擴展變得容易(例如,如果您想要檢測其他字符,只需將它們添加到下面的初始列表checks中),而無需每次都添加新的_exist列表。

In [7]: checks = ['a', 'b', 'c', 'd', 'e']

In [8]: l = ['a', 'b', 'ae', 'bcd']

In [9]: ret = {k: [int(k in v) for v in l] for k in checks}

In [10]: ret
Out[10]:
{'a': [1, 0, 1, 0],
 'b': [0, 1, 0, 1],
 'c': [0, 0, 0, 1],
 'd': [0, 0, 0, 1],
 'e': [0, 0, 1, 0]}

暫無
暫無

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

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