كيفية تحويل أرقام السلاسل إلى أعداد صحيحة في القائمة؟

StackOverflow https://stackoverflow.com/questions/818949

سؤال

عندي قائمة تقول:

['batting average', '306', 'ERA', '1710']

كيف يمكنني تحويل الأرقام المقصودة دون لمس السلاسل؟

شكرا للمساعدة.

هل كانت مفيدة؟

المحلول

changed_list = [int(f) if f.isdigit() else f for f in original_list]

نصائح أخرى

والبيانات تبدو وكأنك تعرف في الوظائف التي من المفترض أن تكون الأرقام. في هذه الحالة فمن الأفضل لتحويل صراحة البيانات في هذه المواقف بدلا من مجرد تحويل أي شيء يشبه رقم:

ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])

وجرب هذا:

def convert( someList ):
    for item in someList:
        try:
            yield int(item)
        except ValueError:
            yield item

newList= list( convert( oldList ) )
a= ['batting average', '306', 'ERA', '1710.5']

[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]

إذا كانت قائمتك تحتوي على float وstring وint (كما أشار @d.putto في التعليق)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top